jQuery Ajax从网站的另一个页面加载内容

时间:2009-10-02 00:59:30

标签: javascript jquery html

我正在尝试从我正在处理的网站的另一个页面中提取Div的内容,并在当前页面上更新Div。我想这样做,所以我不需要重新加载页面。我正在制作的Ajax调用在Firefox中工作正常,它使用网站其他页面中的内容更新Div。问题是它在IE中断,当我尝试从使用.html()返回的数据中获取HTML时,我在IE中得到null。如果我仅对返回的数据发出警报,则会显示html。

var divItems = $("#tab-bbp a").attr("href");
$.ajax({
   type: "GET",
   url: divItems,
   dataType: "html",
   success: function(msg){
       $("#persistenslcont").html($("#persistenslcont",msg).html());
       //null in IE, returns HTML in FF
       alert($("#persistenslcont",msg).html());
   },
   error: function () {
       alert("error");
}                   
});

这似乎很奇怪,这在IE中不起作用。另外,我不确定这是否是我想要完成的最好的技巧。任何帮助将不胜感激。

修改

当我尝试.load函数时,我仍然遇到以下IE的问题是注释代码。我有很多警报试图找出问题所在。似乎#2应该可以工作,但在IE中返回null。

是否可以操纵[object Object]或查看它包含的内容?

var divItems = $("#tab-bbp a").attr("href");
 $("#persistenslcont").load(slItems + " #persistenslcont",
                                    function (data, textStatus, req) {
                                        //returns HTML code in the alert in IE & FF
                                        alert("test 1" + req.responseText);

                                        //returns null in IE - In FF returns proper code
                                        alert("test 2" + $("#persistenslcont",req.responseText).html());

                                        //returns [object Object] same in IE & FF
                                        alert("test 3" + $("#persistenslcont",data));

                                        //returns [object Object] same in IE & FF
                                        var $response = $('<div />').html(data);
                                        var $test4 = $response.find('#persistenslcont');
                                        $('#persistenslcont').append($test4);
                                        alert("test 4" + $test4);

                                        if (textStatus == "error") {
                                          alert("error");
                                        }
                                  });

3 个答案:

答案 0 :(得分:0)

我认为你可以使成功功能更加简单:

success: function(msg){
   $("#persistenslcont").html(msg);

   alert($("#persistenslcont").html(msg));

}

答案 1 :(得分:0)

您可以在jquery中指定所需页面的哪个部分。我会使用load()函数:

     $("#persistenslcont").load($(divItems + " #divcontent");

我认为我拙劣的代码,但基本的想法是正确的,应该在IE中工作。基本上只是将ajax查询指向您想要的页面部分,而不是处理在请求的整个页面的HTML内部乱搞。

答案 2 :(得分:0)

我在IE中调用Ajax的问题​​与open <div>有关。不知何故,我最初没有检查我的HTML结构。这只是HTML验证很重要的另一个原因!