IE7 Ajax内存不足错误

时间:2013-03-08 15:24:05

标签: javascript jquery internet-explorer-7

我正在处理的脚本进行ajax调用,它在Firefox,chrome和IE8 +上运行正常。但是在IE7上,我出现了内存不足的错误。内存高达120MB。我正在使用jQuery 1.8.3。该错误也发生在jQuery 1.9和1.7中。

来源:

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: 'data.asmx/GetChildren',
    data: '{parent:"program","child":"office","id":' + this.Item_id + '}',
    dataType: 'json',
    success: function (r) {
        var data = r.d.data;
    }
});

这是我为IE7获取的个人资料:

编辑:使用来源更新 编辑:终于有时间再次解决问题。原来是一个简单的循环问题。不是jQuery ajax的错。

6 个答案:

答案 0 :(得分:1)

如果孩子的数量更多,那么返回var data的值会更多。

JSON字符串的最大长度。默认值为2097152个字符,相当于4 MB的Unicode字符串数据。 source Microsoft

因此大小不是问题,但如果超过那么角色是一个问题。 :)

答案 1 :(得分:0)

不知道它是否与您的问题有关,但有两件事使您的数据成为无效的JSON。

parent必须用引号括起来,就像id值一样(你只是关闭并重新打开字符串)。

所以,它应该是这样的:

$.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: 'data.asmx/GetChildren',
        data: '{"parent":"program","child":"office","id":"' + this.Item_id + '"}',
        dataType: 'json',
        success: function (r) {
            var data = r.d.data;
        }
});

答案 2 :(得分:0)

如果已禁用虚拟内存,则可能会出现此问题 要启用虚拟内存,请执行以下步骤:

单击“开始”按钮,指向“设置”,然后单击“控制面板”。 双击“系统”图标。 在Performance选项卡上,单击Virtual Memory。 单击“让Windows管理我的虚拟内存设置(推荐)”选项。或者,如果必须使用自己的虚拟内存设置,请为最大大小留出尽可能多的空间。 单击“确定”。

答案 3 :(得分:0)

根据jQuery文档,您可以传递普通对象,因此我建议使用对象。您也可以尝试使用这样的ID,看看它是否有任何区别。

var id = this.Item_id; //
$.ajax
({
    type: "POST",
    url: 'data.asmx/GetChildren',
    data: {"parent":"program","child":"office","id": id},
    dataType: 'json',
    success: function (r) 
    {
        //Please use console.log(r) and see what is coming back here
    }
});

或只是

var id = this.Item_id; //
$.post("data.asmx/GetChildren", 
{
    "parent":"program",
    "child":"office",
    "id": id
}, function(r)
{
    //console.log(r);
},"json");

答案 4 :(得分:0)

您是否尝试发送JSON.stringify而不是Object,并在服务器端解码?

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify

答案 5 :(得分:0)

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    url: 'data.asmx/GetChildren',
    data: '{parent:"program","child":"office","id":' + this.Item_id + '}',
    dataType: 'text',
    success: function (r) {
        var data = (eval("[" + r + "]")[0]).d.data;
    }
});
  • 将dataType更改为“text”。
  • 使用eval(“[”+ textJson +“]”)[0]获取对象数据。
    • 如果仍然失败,请将“var data = ...”行替换为“var data = r;”并报告是否也失败。