HTTP响应代码0表示AJAX请求已取消。
这可能是由于超时,XHR中止或防火墙对请求的踩踏而发生的。超时很常见,这意味着请求无法在指定的时间内执行。XHR Abortion的操作非常简单...实际上,您可以在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非常相似),则errorType将在中止时为“错误”,在发生超时时为“超时”。
jQuery: error(jqXHR, textStatus, errorThrown);
Zepto: error(xhr, errorType, error);