3

我正在使用 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 以匹配其他网站上的内容,但无济于事。

有任何想法吗?

4

2 回答 2

3

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

于 2013-04-17T19:29:51.383 回答
0

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

于 2013-12-12T09:10:26.867 回答