0

ページを更新するときに、次のコードの要求/応答タイムアウトを停止することはできますか?

    setInterval(function(){
    var xhr = $.ajax({
    url:'/ajax_controller/searchForTracks/'+logged_user_id,
    success: function(data){
        console.log(data+' tracks added');
            }
        });
    },5000);

私が試してみました:

    $(window).unload(function(){
            xhr.abort();
        });

   window.onbeforeunload = function(){
      throw new error('Aborting javascript');
   }

しかし、私には何も機能しません。ページをすぐに更新し、URLでxhrリクエストが終了するまで待たないようにしたい(場合によっては数分かかることがあるため)。

4

1 に答える 1

0

問題はここにあると思います:

setInterval(function(){
    var xhr = $.ajax({...   <---
},5000);

コールバック関数内で変数を初期化しています。必要な作業は次のとおりです。

var xhr;
setInterval(function(){
    xhr = $.ajax({...
},5000);

そして、あなたはすることができます

console.log(xhr); // Object...

また、setIntervalをキャッシュすることをお勧めします。

var myInterval =     setInterval(function(){
        xhr = $.ajax({...
    },5000);

間隔をキャンセルする必要がある場合は、

clearTimeout(myInterval);

TLDR: 範囲の問題です。

于 2014-09-05T17:33:17.430 に答える