无法从ajax响应获取body元素 [英] Cannot get body element from ajax response

查看:111
本文介绍了无法从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆