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);