在我将心爱的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中的问题。我不知道为什么会这样,我的谷歌搜索没有产生任何结果(谷歌得到了正确答案的正确答案)。无论如何,删除此代码块解决了我的问题。我感谢所有给予我的帮助。谢谢你们!
答案 0 :(得分:2)
看起来你正在使用malsup插件。如果是这种情况,那么git repo对此插件有一些已知问题:
https://github.com/malsup/form/issues
检查您的问题是否已经报告过。另请检查jQuery版本