4

我正在处理的脚本进行 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 的错。

4

6 回答 6

1

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

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

所以大小不是问题,但是字符如果超过那就是​​一个问题。:)

于 2013-03-20T12:44:29.887 回答
0

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

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/JSON/stringify
于 2013-03-15T21:48:21.527 回答
0

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

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

于 2013-03-15T09:24:51.393 回答
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;
    }
});
  • 将数据类型更改为“文本”。
  • 使用 eval("[" + textJson + "]")[0] 获取对象数据。
    • 如果仍然失败,将“var data = ...”行替换为“var data = r;” 并报告是否也失败了。
于 2013-03-20T13:58:11.137 回答
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");
于 2013-03-15T16:34:15.243 回答
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;
        }
});
于 2013-03-08T15:34:07.783 回答