jQuery には、中止要求を試行するために使用できる中止 API がいくつかあります。jQueryは実際にAjaxリクエスト自体を中止することを決定できますか?
たとえば、進行中の Ajax リクエストが多数あり、そのうちの 1 つから奇妙なものが戻ってきて、jQuery が他のすべてを中止することを決定したとします。
これは起こり得ますか?
オプション以外はtimeout
、一般的に jQuery は決定しません。あなたが決める。
$.ajax()
ルーチンは、あなたを返すものの参照を常に持つことです。
つまり、 を呼び出すだけでなく、代わりに$.ajax()
これを実行しますxhr = $.ajax()
。
$.ajax()
は、Ajax 機能の単なる jQuery ラッパーである jqXHR オブジェクトを返します。http://api.jquery.com/jQuery.ajax/を参照してください。
があれば、どこからでもxhr
電話をかけることができます。xhr.abort()
どのように設計するかによって異なりますが、.abort() 呼び出しを行います。以下は、考えられるユースケースの 1 つです。
1 つのポーリング関数と、ユーザーが長時間アイドル状態になっているかどうかをチェックする別の関数。
ユーザーがアイドル状態の場合は、ポーリング ajax を中止し、おそらくセッションが終了したことをユーザーに警告するメッセージを表示します。
使用例:
var mainXHR; // this is just one reference.
// You can of course have an array of references instead
function mainPollingFunction () {
mainXHR = $.ajax({
url: 'keepAlive.php',
// more parameters here
timeout: 10000, // 10 seconds
success: function () {
// server waits 10 seconds before responding
mainPollingFunction(); // initiate another poll again
}
});
}
// Let's say this function checks if the user is idle
// and runs when a setTimeout() is reached
function otherFunction () {
if ( /* if user is idle */ ) {
if (mainXHR) mainXHR.abort(); // abort the ajax in case it's still requesting
}
}