2013-03-08 49 views
3

我正在處理的腳本會調用ajax,並且它在Firefox,Chrome和IE8 +上運行良好。但在IE7上,我收到了內存不足的錯誤。內存可達120MB。我正在使用jQuery 1.8.3。該錯誤也發生在jQuery 1.9和1.7中。IE7 Ajax內存不足錯誤

來源:

$.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

那麼,哪裏的代碼? – Blazemonger 2013-03-08 15:24:42

+0

請提供您的代碼。 – 2013-03-08 15:24:55

+0

更新了源 – 2013-03-08 15:29:49

回答

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; 
     } 
}); 
+0

ty。試過了。不是它 – 2013-03-08 15:50:18

0

此問題。
若要啓用虛擬內存,請按照下列步驟操作:

單擊開始按鈕,指向設置,然後單擊控制面板。 雙擊系統圖標。 在性能選項卡上,單擊虛擬內存。 單擊「讓Windows管理我的虛擬內存設置(推薦)」選項。或者,如果您必須使用自己的虛擬內存設置,請儘可能多地留出最大空間。 單擊確定。

+0

我不認爲這是它。這看起來像一個jQuery + IE 7的bug。我無法告訴我的用戶啓用虛擬內存。 – 2013-03-15 16:32:26

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"); 
+0

IE7不支持console.log功能 – inser 2013-03-18 11:50:43

+0

我知道IE7沒有console.log,但請嘗試在Firefox或其他東西只是爲了檢查從服務器回來的東西。 – nicholasnet 2013-03-18 14:56:24

0

你有沒有嘗試發送JSON.stringify,而不是一個對象,並在服務器端解碼?

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

IE7沒有本機JSON支持。你需要使用JSON.js - https://github.com/douglascrockford/JSON-js – 2013-03-19 11:54:38

+0

你可以在IE7中添加修補程序,並且可以工作... http://stackoverflow.com/questions/2503175/json -on-IE6,IE7 – ncubica 2013-03-19 14:46:31

1

如果孩子數量較多,則返回到var data的值會更多。

JSON字符串的最大長度。默認值爲2097152個字符,相當於4 MB的Unicode字符串數據。 source Microsoft

所以尺寸不是問題,但字符如果超過則是一個問題。 :)

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;」並報告是否也失敗了。