$.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中。可能是什么原因。我从服务器返回suucess值。如果成功为True,则会重定向到tempUrl
。
但在IE中没有任何东西在这里讨厌。似乎ajax根本不在IE中工作。
答案 0 :(得分:4)
您遇到了“悬空逗号”问题(}
参数关闭success
后的逗号)。 IE不喜欢对象文字中的悬空逗号,它将它们视为语法错误而脚本会死掉。 (这不是IE的错误,它是对早期规范的合理解释;最新的规范特别允许使用逗号,这在IE8中得到修复。)偏离主题:IE有类似但不同的,问题是数组文字中的悬空逗号(仍然在IE8中)。
更多关于两个问题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
请参阅底部附近的注释。删除逗号,你没事。事情正在改善(如上面的链接文章中所述),但为了最大程度地兼容,你需要观看一段时间。
(其他说明偏离主题,但同样强烈建议修复这些,从不依赖分号插入。)
答案 1 :(得分:0)
您应该在这些行的末尾添加分号:
$('.error-message').removeClass('hide')
$('.error-message').addClass('show')
var tempUrl="http://10.0.1.101:9000/bar/"