jQuery GET没有在IE中读取HTML响应数据

时间:2013-04-11 17:58:27

标签: jquery ajax internet-explorer

我正在使用jQuery(在Wordpress中)进行非常简单的ajax调用 - 使用GET获取页面内容,然后将响应读入jQuery对象。这在除IE8之外的每个浏览器中都能正常工作(不关心IE6 / 7。相关代码与我以前网站中使用的相同,所有这些都在IE8中工作。这是代码:

var ajax_params = {
url: relative_url,
type: 'GET',
dataType: 'html',
data: {},

success: function(data, textStatus, xhr) {

     // create jquery element from html string
    data = $('<div/>').append(data);

    pre($(data).find('#content'));
    pre($('#content'));

    plugin.replace_content(data, relative_url);

},

};

plugin.ajax_call = $.ajax(ajax_params);

pre()函数只是对console.log的调用,我在IE8中使用firebug lite进行调试。我已确定ajax调用正在运行,并且所请求页面的HTML已在data变量中成功返回。它挂在data = $('<div/>').append(data)上,结果是一个空div。正如我所说,这个确切的代码适用于其他网站,所以我无法解释这一点。我已经将jQuery版本降级到1.8.3以匹配其他网站上的内容无济于事。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

我们发现了问题:这是一个内存问题,因为ajax响应太大而IE无法解析。这可以解释为什么其他网站上完全相同的方法有效。我们通过尽可能多地从响应html中删除来修复它。另一种解决方案是将响应数据拆分为块并发出多个ajax请求。

答案 1 :(得分:0)

是的,这是真的。在IE8中,如果响应太大,则ajax调用无效。要使用IE8,我们必须减少从ajax调用中获得的内容。