Javascript IE7 Ajax内存不足错误
我正在编写的脚本可以调用ajax,在Firefox、chrome和IE8+上运行良好。但是在IE7上,我遇到了一个内存不足的错误。内存可达120MB。我使用的是jQuery1.8.3。这个错误也发生在jQuery1.9和1.7中 资料来源: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({
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;
}
});