我正在使用 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 以匹配其他网站上的版本,但无济于事。
有什么想法吗?
最佳答案
我们发现了问题所在:这是一个内存问题,是由于 ajax 响应太大而 IE 无法解析造成的。这可以解释为什么完全相同的方法在其他网站上有效。我们通过从响应 html 中删除尽可能多的内容来修复此问题。另一种解决方案是将响应数据分割成 block 并发出多个 ajax 请求。
关于jQuery GET 不读取 IE 中的 HTML 响应数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15955638/