$.ajax({
type: 'POST',
url: URL +'/foo/',
data: {'pass': pass},
dataType: "json",
jsonp:'jsonp_callback',
success: function(data) {
if (data["success"] === "false") {
$("#password").val("");
$('.error-message').removeClass('hide')
$('.error-message').addClass('show')
}
else {
var tempUrl="http://10.0.1.101:9000/bar/"
location.href=tempUrl;
}
},
});
return false
在Mozilla,Chrome,Safari中,这可以正常工作。但不是在IE中。可能是什么原因。我从服务器返回成功值。如果成功为True,它将重定向到
tempUrl
。但是,IE中没有任何东西在这里。看来ajax在IE中根本不起作用。
最佳答案
您遇到了“悬挂逗号”问题(}
参数的success
结束后的逗号)。 IE不喜欢在对象字面量中使用逗号,而是将其视为语法错误并将脚本终止。 (这不是IE错误,这是对早期规范的合理解释;不过,最新规范专门允许使用逗号,并且该问题已在IE8中修复。)离题:IE的问题与之相似,但有所不同数组文字中的悬挂逗号(仍在IE8中)。
关于这两个isuses this article的更多信息,但基本上是:
$.ajax({
type: 'POST',
url: URL +'/foo/',
data: {'pass': pass},
dataType: "json",
jsonp:'jsonp_callback',
success: function(data) {
if (data["success"] === "false") {
$("#password").val("");
$('.error-message').removeClass('hide') // <== Strongly recommend ; here
$('.error-message').addClass('show') // <== Another ; here
}
else {
var tempUrl="http://10.0.1.101:9000/bar/" // <== Another ; here
location.href=tempUrl;
}
}, // <== This comma is the problem
});
return false // <== Another ; here
请参阅底部附近的注释。删除逗号就可以了。情况正在改善(如上面的链接文章中所述),但是为了在野外获得最大的兼容性,您需要等待一会儿。
(其他说明离题,但同样,强烈建议您也修复这些问题,切勿依赖分号插入。)
关于jquery - 为什么IE和Ajax有这么多问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4323921/