2016-06-11 3 views
1

Я хочу немедленно отклонить все запросы AJAX в зависимости от переменной. Я понимаю, как подключить XMLHttpRequest, но не знаю, как его отклонить.Отклонить все запросы AJAX

(function(open) { 
      XMLHttpRequest.prototype.open = function(method, url, async, user, pass) { 
       this.addEventListener("readystatechange", function() { 
        if(this.readyState === 1){ 
         // stop all ajax attempts if we're disconnected 
         if(!self.isConnected){ 
          console.log('rejecting') 
          // reject here 
          this.abort(); // ??? 
         } 
        } 
       }, false); 
       open.call(this, method, url, async, user, pass); 
      }; 
     })(XMLHttpRequest.prototype.open); 

Кроме того, я хочу знать, если вы звоните это в this.readyState === 0 сродни называя его «когда запрос первым начинает»

ответ

0

вы можете использовать функцию отмены, чтобы отменить запрос AJAX, первый сохранить запрос в некоторые переменные и вызов прерывание на ней

$(document).ready(
    var xhr; 

    var fn = function(){ 
     if(xhr && xhr.readyState != 4){ 
      xhr.abort(); 
     } 
     xhr = $.ajax({ 
      url: 'ajax/progress.ftl', 
      success: function(data) { 
       //do something 
      } 
     }); 
    }; 

    var interval = setInterval(fn, 500); 
); 

Существует другой подход создания установки AJAX пула, который я не рекомендую, fiddle здесь

$.xhrPool = []; 
$.xhrPool.abortAll = function() { 
    $(this).each(function(idx, jqXHR) { 
     jqXHR.abort(); 
    }); 
    $.xhrPool = []; 
}; 

$.ajaxSetup({ 
    beforeSend: function(jqXHR) { 
     $.xhrPool.push(jqXHR); 
    }, 
    complete: function(jqXHR) { 
     var index = $.xhrPool.indexOf(jqXHR); 
     if (index > -1) { 
      $.xhrPool.splice(index, 1); 
     } 
    } 
}); 
+0

Почему downvote ???? –

+0

Меня интересуют все запросы – Tester232323

+0

@ Tester232323: тогда вам нужно сохранить свой запрос в каком-то массиве, а затем вы можете вызвать прерывание на них ... вам нужно поддерживать переменную запроса –

0

Я просто добавил

this.abort()

и это, кажется, немедленно прекратить все запросы, когда это необходимо.

Смежные вопросы