簡體   English   中英

IE7 JSON響應:預期的對象..適用於Chrome和FireFox

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM