无法从ajax响应中获取body元素
Cannot get body element from ajax response
响应是一个HTML文档(来自链接的href请求)
var data = $(response).find('body').html();
alert(data);
// I get a alert with nothing...
完整代码:
$.ajax({
url: $(this).attr('href'),
type: 'GET',
success: function(response){
var data = $(response).find('body').html();
alert(data);
}
});
试试这样做:
var $dom = $(document.createElement("html"));
$dom[0].innerHTML = response;
var $body = $dom.find("body");
使用这段复杂的代码;)
/*this will get the body content and head by replacing them with div before placing them inside the jQuery factory witch will avoid all bugs, i used this while creating the ajaxit jquery plugin :) */
$.ajax({
type: "GET",
url: $(this).attr('href'),
async:true,
error:function (event, request, options, error) {
if (ajaxItMain.onError){
ajaxItMain.onError(event,request,options,error);
}
},
success: function (data) {
// ----------------- < data >
// clearing CDATA
data=data.replace(/'<'!'[CDATA'['/'/'>'<'!'-'-/gi,'');
data=data.replace(/'/'/'-'-'>'<'!']']'>/gi,'');
// extracting the the head and body tags
var dataHead = data.match(/<'s*head.*>['s'S]*<'s*'/head's*>/ig).join("");
var dataBody = data.match(/<'s*body.*>['s'S]*<'s*'/body's*>/ig).join("");
var dataTitle = data.match(/<'s*title.*>['s'S]*<'s*'/title's*>/ig).join("");
dataHead = dataHead.replace(/<'s*head/gi,"<div");
dataHead = dataHead.replace(/<'s*'/head/gi,"</div");
dataBody = dataBody.replace(/<'s*body/gi,"<div");
dataBody = dataBody.replace(/<'s*'/body/gi,"</div");
dataTitle = dataTitle.replace(/<'s*title/gi,"<div");
dataTitle = dataTitle.replace(/<'s*'/title/gi,"</div");
// comments
var commentPattern = /'<'!'-'-(['s'S]*?)'-'-'>/ig;
// get head comment tags
var headComments = dataHead.match(commentPattern);
// get body comment tags
var bodyComments = dataBody.match(commentPattern);
// head - body - title content
var $dataHead = $(dataHead);
var $dataTitle = $(dataTitle);
var $dataBody = $(dataBody);
}
});
}
将一个代表整个HTML文档的字符串传递给jQuery工厂,将得到一个包含该字符串中许多标记的集合,而不是一个代表整个页面的元素。
您需要从标记中创建一个DOM文档,并将其传递给jQuery。
作为初学者,您可以尝试告诉$.ajax
您希望返回XML,以便它为您解析为DOM文档。但是,生成的DOM文档不允许对其调用.html()
等方法,因为它不被视为HTML。
相关文章:
- 从二维数组中获取img src和img维度,并在body中显示
- 如何从未定义的表单中获取req.body
- 如何从body标记中获取元素的索引
- 使用PhantomJS获取body onload javascript的值
- 我无法从nodejs + expressjs中的req.body获取数据
- 在尝试获取request.body Nodejs中的所有字段时获取异常“Object.keys在尝试访问对象时调用非对象
- document.getElementsByTagName没有'不起作用.如何获取body的NodeList的长
- 获取一个body类元素并将其转换为PHP变量
- 仅使用javascript获取站点的body元素
- 从网站获取body标签值
- jQuery获取正文中的html以及body标签
- Wkhtmltopdf在body html内获取页面计数
- 在指令中获取body元素
- 如何使用 jquery 获取 body 元素
- 通过body上的mousmove事件获取鼠标所在的元素
- 正在获取nodejs中未定义的request.body值
- JsonRestStore:使用POST + Body获取所有对象,而不是get
- 无法从ajax响应中获取body元素
- 如何使用javascript获取body标签的值
- Javascript:在一行字符串中获取body html.如何删除换行符