2016-06-15 2 views
0

私はループでajaxリクエストを呼び出します。そのうち約20人。しかし、中止される人はほとんどいません。どうすればそれを避けることができますか?複数のXMLHttpRequest

ほとんどが中断されています。

function callURLAsync(url) 
{ 
    var xmlHttpReq = false; 
    var self = this; 
    // Mozilla/Safari 
    if (window.XMLHttpRequest) 
    { 
     self.xmlHttpReq = new XMLHttpRequest(); 
    } 
    // IE 
    else if (window.ActiveXObject) 
    { 
     self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    self.xmlHttpReq.open('POST', url, true); 
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 

    self.xmlHttpReq.onreadystatechange = function() 
    { 
     if (self.xmlHttpReq.readyState == 4) { 
     } 
    } 

    self.xmlHttpReq.send(); 
} 

function startLogout(){ 

    for(var i=0;i< 20;i++){ 
     callURLAsync("myDummyURl"); 
    } 

} 

おかげでは、Ajaxのための Sailesh

+0

「this」はウィンドウなので、Ajaxを呼び出すたびに同じ変数を上書きしています。一度に20コールをサーバーに追加するのは悪い考えです。 – epascarello

+0

合意。しかし、ログアウトすると、すべてのアプリケーションのセッションをクリアする必要があります。 – user2354566

+0

そして 'startLogout'は何をトリガーしていますか?それはボタンのクリックかアンロードですか? – epascarello

答えて

0

理由は中止を取得するために呼び出します。

  • フォームまたはページナビゲーション - ナビゲーションの原因となっているアクションをキャンセルし、キャンセルすることはできませんまたは遅延が
  • をONUNLOAD
  • アボートを呼び出す
  • 同じXMLHttpRequestオブジェクトを再利用する

あなたのケースでは、ボタンがページを移動しているように見えます。あなたがする必要があるのは、ボタンクリックからevent.preventDefault()またはreturn falseを使用することです。すべてのAjax呼び出しが完了したら、window.locationを使用してリダイレクトを実行できます。