IE7 JSON响应:预期的对象..适用于Chrome和FireFox

时间:2012-08-15 14:55:20

标签: javascript json internet-explorer-7 response object-expected

在我将心爱的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
}

回答!显然,我在ajaxSubmit()的beforeSend选项中的$ .attr()调用导致了IE7中的问题。我不知道为什么会这样,我的谷歌搜索没有产生任何结果(谷歌得到了正确答案的正确答案)。无论如何,删除此代码块解决了我的问题。我感谢所有给予我的帮助。谢谢你们!

1 个答案:

答案 0 :(得分:2)

看起来你正在使用malsup插件。如果是这种情况,那么git repo对此插件有一些已知问题:

https://github.com/malsup/form/issues

检查您的问题是否已经报告过。另请检查jQuery版本

这是给你的:https://github.com/malsup/form/issues/179