2

我在我的程序中使用 jQuery检索HTML数据。.ajax()

Internet Explorer 9、Chrome、Firefox 和Opera中的一切都很愉快。

Internet Explorer 7Internet Explorer 8中存在问题。

我的 jQuery 代码如下。

$j.ajax({
    type:'POST',
    datatype:'HTML',
    url:processUrl,
    success:function(data){
        alert(data);
        var testdata = $j(data).find(".category-products");
        alert(testdata.html());
        $j(".col-main .category-products").empty().replaceWith(testdata);
    },
    complete: function(){
        //Doing something
    }
});

现在,当我 alert 时data,我得到了我的 HTML 数据(在 Internet Explorer 7 和 Internet Explorer 8 中也是如此)。

但是,当我发出警报时testdata,我进入null了 Internet Explorer 7 和 Internet Explorer 8。

我该如何解决这个问题?

您可以在此处查看错误(按数字进行分页)-

如果您正在调试,那么您会在第 11949 行找到我的代码。脚本文件将有一个很长的奇怪名称,因为它在运行时合并其他脚本文件。

更新

我在 localhost 上实现了相同的解决方案,并且在所有浏览器上都可以正常工作。是服务器问题吗?

更新 2

问题已经解决,我猜这是服务器上的缓存问题,因为我在不同的位置安装了我的项目的新副本,并且在所有浏览器中都可以正常工作。

4

1 回答 1

2
success:function(data){
       alert(data);
       var temp = $j('<div/>').append(data); // Here is the trick:
                                             // Set the data to a
                                             // temporary element.
       var testdata = $j(temp ).find(".category-products"); // Then find
       alert(testdata.html());
       ...
 },

如果上述方法不起作用,请使用hiddendiv。认为:

<div id="imhidden"></div>

然后执行以下操作:

success:function(data){
        alert(data);
        $j('#imhidden').html(data); // Here is the trick:
                                    // Set the data to that
                                    // hidden div.

        var testdata = $j('#imhidden').find(".category-products"); // Then find
        alert(testdata.html());
        ...
},
于 2012-06-02T06:14:03.183 回答