这是在我可以将我心爱的 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 出现问题。我不知道为什么会这样,我的谷歌搜索没有产生任何结果(必须谷歌正确的问题才能得到正确的答案)。无论如何,删除此代码块解决了我的问题。我感谢给予我的所有帮助。多谢你们!