HTTP応答コード0は、AJAX要求がキャンセルされたことを示します。
これは、タイムアウト、XHR中絶、またはファイアウォールがリクエストを踏むことから発生します。タイムアウトは一般的です。これは、リクエストが指定時間内に実行に失敗したことを意味します。XHR Abortionの実行は非常に簡単です。実際には、XMLHttpRequestオブジェクトで.abort()を呼び出して、AJAX呼び出しをキャンセルできます。(これは、AJAX呼び出しが返されて破棄されたオブジェクトを参照しようとしないようにする場合、単一ページアプリケーションの良い方法です。)マークされた回答で述べたように、ファイアウォールは要求をキャンセルしてこれをトリガーすることもできます。応答なし。
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);