Javascript IE7 Ajax内存不足错误

Javascript IE7 Ajax内存不足错误,javascript,jquery,internet-explorer-7,Javascript,Jquery,Internet Explorer 7,我正在编写的脚本可以调用ajax,在Firefox、chrome和IE8+上运行良好。但是在IE7上,我遇到了一个内存不足的错误。内存可达120MB。我使用的是jQuery1.8.3。这个错误也发生在jQuery1.9和1.7中 资料来源: $.ajax({ type: "POST", contentType: "application/json; charset=utf-8", url: 'data.asmx/GetChildren', data: '{pare

我正在编写的脚本可以调用ajax,在Firefox、chrome和IE8+上运行良好。但是在IE7上,我遇到了一个内存不足的错误。内存可达120MB。我使用的是jQuery1.8.3。这个错误也发生在jQuery1.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的错。

不知道这是否与您的问题有关,但有两件事使您的数据成为无效的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;
        }
});

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

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

根据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");

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

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

如果子项的数量更多,则返回到
var数据的值将更多

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

因此大小不是问题,但字符如果超过则是问题。:)

  • 将数据类型更改为“文本”
  • 使用eval(“[”+textJson+“]”)[0]获取对象数据
    • 如果仍然失败,则将“var data=…”行替换为“var data=r;”,如果失败,则报告

那么,代码在哪里呢?发布更多代码,比如嵌套在中的函数
$.ajax
。我怀疑是起因。缺少某些内容
success
功能是否在任何浏览器上运行?如果是这样,您可以发布响应数据吗?这可能是反序列化json的问题。您可以尝试用一个脚本来替换ajax调用,该脚本只对相应的json字符串进行反序列化,看看问题是否仍然存在。您是否尝试过进行原始ajax调用(没有jQuery?)我认为这不是问题所在。这似乎是一个jQuery+IE7错误。我不能告诉我的用户启用虚拟内存。IE7不支持console.log功能我知道IE7没有console.log,但请在Firefox或其他软件中尝试,以检查服务器返回的内容。IE7不支持本机JSON。您需要使用JSON.js-您可以在IE7中添加修复程序,并且可以正常工作。。。
$.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;
    }
});