在jQuery中停止XHR请求

时间:2012-12-31 03:09:26

标签: jquery function execution

刷新页面时是否可以停止以下代码的请求/响应超时?

    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请求完成(有时需要几分钟);

1 个答案:

答案 0 :(得分:0)

我认为问题在于:

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

您正在初始化变量INSIDE回调函数,您所要做的就是:

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

然后你可以做

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

我也建议缓存setInterval以便你可以

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

如果您需要取消间隔,请执行

clearTimeout(myInterval);

TLDR:这是一个范围问题。