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 回答