jQuery Ajax请求因readyState:0错误而失败

时间:2014-02-22 19:53:09

标签: javascript php jquery ajax

我正在使用以下代码(之前,它是一个完整的$ .ajax()调用,但我将其简化为$ .post()以消除可能的错误配置,但它没有帮助):

$.post( "/ajax/login.php", { username: username, password: password }, function(data) {
    if (data.result === 'success') {
        $('#login').submit();
    } else {
        alert(data.message);
    }
}, "json").fail(function(event, jqXHR, settings){
    alert("An error occured. Please try again later. All we know: " + JSON.stringify(event) + " " + jqXHR + " " + settings + " " + exception);
});

所以我得到{"readyState":0,"responseText":"","status":0,"statusText:"error"}。 IE9默认设置,iPhone,iPad和iPad Mac Safari浏览器,有时候是Chrome。

此外,IE9还会挂起浏览器60秒,直到请求超时,然后显示错误消息。

有时IE9会毫无问题地立即通过。

正如您所看到的,没有跨域请求,因为我正在使用相对路径。我能够解决这个问题的唯一方法就是使用GET请求。这很糟糕,因为服务器上的access.log可以存储所有用户密码。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

以防万一,确保你没有任何干扰你的ajax请求的执行,可能过早地终止它并导致readyState = 0错误。

您可以在启动请求的函数中使用event.preventDefault()来执行此操作。

例如:

function buttonClicked(e) {
  e.preventDefault();
  $.post(...);
}
相关问题