HTTP 响应代码 0 表示 AJAX 请求已取消。
这可能发生在超时、XHR 中止或防火墙踩踏请求。超时很常见,它意味着请求在指定时间内未能执行。XHR 中止操作非常简单……您实际上可以在 XMLHttpRequest 对象上调用 .abort() 来取消 AJAX 调用。(如果您不希望 AJAX 调用返回并尝试引用已销毁的对象,这对于单页应用程序来说是一种很好的做法。)正如标记的答案中提到的,防火墙也能够取消请求并触发此0 回应。
XHR Abort:使用 jQuery 中止 Ajax 请求
var xhr = $.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
//kill the request
xhr.abort()
值得注意的是,在 XHR 对象上运行 .abort() 方法也会触发错误回调。如果您正在执行任何类型的错误处理来解析这些对象,您会很快注意到中止 XHR 和超时 XHR 是相同的,但是使用 jQuery 时,传递给错误回调的 textStatus 将在中止时“中止”并且发生超时的“超时”。如果您使用的是 Zepto(与 jQuery 非常相似),则错误类型在中止时将是“错误”,而在发生超时时将是“超时”。
jQuery: error(jqXHR, textStatus, errorThrown);
Zepto: error(xhr, errorType, error);