2016-06-11 2 views
1

変数に応じてすべてのAJAXリクエストを直ちに拒否したいと考えています。 XMLHttpRequestをフックする方法を理解していますが、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要求を中止するabort関数を使用することができ、それを呼び出すことに似ているかどうかを知りたいですいくつかの変数と、私はお勧めしません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); 
); 

を呼び出し、ここ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()

を追加し、これは必要なときにすぐにすべての要求を中止するようです。

関連する問題