无法从ajax响应获取body元素 [英] Cannot get body element from ajax response
本文介绍了无法从ajax响应获取body元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
响应是一个HTML文档(来自链接的href请求)。
$ b $ pre $ var data = $(response)。找到( '主体')HTML()。
alert(data);
//我没有任何提示......
完整代码:
$ .ajax({
url:$(this).attr('href'),
类型:'GET',
成功:函数(响应){
var data = $(response).find('body')。html();
alert(data) ;
}
});
解决方案
使用这个棘手的代码;)
/ *这将获得body内容和头部,将它们放入jQuery工厂之前将它们替换为div,以避免所有bug,我使用了这个创建ajaxit jquery插件:) * /
$ .ajax({
类型: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>
//清除CDATA
data = data.replace(/ \< \!\ [CDATA \ [\ / \ / \> \< \! \-\- / GI, ');
data = data.replace(/ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\!\\ \\ \\ \\ \\ \\ \\ \\ \\> / gi, '');
//提取头部和身体标记
var dataHead = data.match(/< \s * head。*> [\s\S] *< ; \s * \ / head\s * GT; / IG)。加入( );
var dataBody = data.match(/< \s * body。*> [\s\S] *< \ s * \ / body \s *> / ig )。加入();
var dataTitle = data.match(/< \ * * title。*> [\s\S] *< \ s * \ / title \s *> / ig )。加入();
dataHead = dataHead.replace(/< \ * 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(/< \ * title / gi,< div);
dataTitle = dataTitle.replace(/< \ s * \ / title / gi,< / div);
//评论
var commentPattern = / \< \!\ -\ - ([\s\S] *?)\ -\-\> / IG;
//获取标题注释标记
var headComments = dataHead.match(commentPattern);
//获得机构评论标记
var bodyComments = dataBody.match(commentPattern);
// head - body - title content
var $ dataHead = $(dataHead);
var $ dataTitle = $(dataTitle);
var $ dataBody = $(dataBody);
}
});
}
The response is a HTML document (from a request from a link's href)
var data = $(response).find('body').html();
alert(data);
// I get a alert with nothing...
full code:
$.ajax({
url: $(this).attr('href'),
type: 'GET',
success: function(response){
var data = $(response).find('body').html();
alert(data);
}
});
解决方案
Use this tricky code ;)
/*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);
}
});
}
这篇关于无法从ajax响应获取body元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文