3

这是在我可以将我心爱的 webapp 发送到野外之前我必须做的最后一件事,但当然 IE7 对我来说很难!

我正在使用 JQuery Form 插件将数据上传到我的服务器。然后,一个 servlet 类将对该文件运行一些操作,并将一些 JSON 回传给客户端。与往常一样,Chrome 和 Firefox 像冠军一样处理响应并给我期望的输出。

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();
        }

    }
})

}

我已经尝试将响应标头内容类型显式设置为“应用程序/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 出现问题。我不知道为什么会这样,我的谷歌搜索没有产生任何结果(必须谷歌正确的问题才能得到正确的答案)。无论如何,删除此代码块解决了我的问题。我感谢给予我的所有帮助。多谢你们!

4

1 回答 1

2

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

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

检查您的问题是否已被报告。还要检查你的 jQuery 版本

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

于 2012-08-15T15:17:44.160 回答