[英]IE7 JSON Response: Object Expected.. Works in Chrome and FireFox
這是我在發送我心愛的webapp之前必須做的最后一件事,但當然IE7對我來說很難!
我正在使用JQuery Form插件將數據上傳到我的服務器。 然后,servlet類將對該文件運行一些操作,並將一些JSON回送給客戶端。 與往常一樣,Chrome和Firefox像champs一樣處理響應,並給出我期望的輸出。
Internet Explorer 7沒有。 我得到一個“對象預期”錯誤....我已將我的問題縮小到單個函數。 我做了一個有根據的猜測IE7沒有正確處理響應,但我真的不知道。 以下是導致問題的實際代碼:
function uploadScript() {
$("#uploadScript").ajaxSubmit({
beforeSend: function() {
$("#uploadScript").attr("disabled", true);
},
dataType: "json",
cache: false,
success: function(response, status, xhr) {
if(response != undefined) {
commandArray = ([]).concat(response.command);
paramsArray = ([]).concat(response.params);
IDArray = ([]).concat(response.id);
commandID = response.commandID;
updateScriptView();
}
}
})
}
我已經嘗試將響應頭內容類型顯式設置為'application / json'無效。 我甚至讀過某個地方,這樣的標題甚至會導致IE出錯,所以前面肯定是令人困惑的。
也許是JSON語法? 不! 我檢查了它,仔細檢查了它,然后通過JSONLint運行它只是為了確定。
關於我做錯了什么的任何想法?
編輯: JSON響應字面上是這樣的:
{ "command" : ["sequential","wait","tune","endsequential"],"params" : [["5"],["00:00:03"],["202","RA29B[*]"],["100000"]],"id" : [100000,100002,100003,100001],"commandID" : 100004}
對眼睛友好是這樣的:
{
"command": [
"sequential",
"wait",
"tune",
"endsequential"
],
"params": [
[
"5"
],
[
"00:00:03"
],
[
"202",
"RA29B[*]"
],
[
"100000"
]
],
"id": [
100000,
100002,
100003,
100001
],
"commandID": 100004
}
ANSWERED! 顯然,我在ajaxSubmit()的beforeSend選項中的$ .attr()調用在IE7中引起了問題。 我不知道為什么會這樣,我的谷歌搜索沒有產生任何結果(谷歌得到了正確答案的正確答案)。 無論如何,刪除此代碼塊解決了我的問題。 我感謝所有給予我的幫助。 多謝你們!
看起來你正在使用malsup插件。 如果是這種情況,那么git repo對此插件有一些已知問題:
https://github.com/malsup/form/issues
檢查您的問題是否已經報告過。 還檢查你的jQuery版本
這是給你的: https : //github.com/malsup/form/issues/179
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.