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