2016-11-02 6 views
0

私の現在のプロジェクト保留中のPOSTまたはGET要求があるかどうかを確認する必要があります。依然として保留中のリクエストがある場合、ユーザーは別のページに移動することはできませんが、何らかの理由で、保留中のリクエストの量を取得する方法がわかりません。保留中のPOST/GET要求の量を取得する

enter image description here

私はすでに.ajaxComplete()document.readyStateを試してみましたが、これらは私が探していますものではありません。そして、インターネット上で私はこの特定の事のための解決策や機能を見つけることができません。

誰かが私に探す場所を教えてもらえますか?

ありがとうございます。

+1

リクエストするたびにグローバルカウンタを増やしてみませんか?その後、done()関数のカウンタを減らしてください。 –

答えて

3

ブラウザのdev-toolからどこに行ったかと思います。この情報は通常JS経由では入手できません。 @johnと同様に、簡単な方法は、AJAXリクエストを開始するときにグローバルカウンタをインクリメントし、終了したらそれをデクリメントすることです。

私はAJAX-Objectsを含む配列を好んでおり、配列の長さを調べます。要求が完了したら(finally -function)、この要求を配列から削除します。すべての保留中の要求を「強制終了」ボタンを実装することができます。先進時間では、開始時間を配列に入れて、消費された時間を表示することもできます(スクリーンショットなど)。

私はコードを提供することができましたが、それは大きな問題ではないと思っています。このAJAX-Callにこのカウンタ/アレイを追加するのに時間がかかります。

+0

答えがうまくいけば、私はこれを試してみます。ありがとう。 – Basvo

2

jQueryは、Johnが提案したように、グローバルカウンタを簡単に構築できるグローバルなajaxイベントハンドラ(明示的には.ajaxSend().ajaxComplete())を提供しています。

コードに複数のオカレンスがある場合は、この手法を使用して、リクエストごとにハンドラをアタッチする必要はありません。

var ajaxCounter = 0; 
$(function() { 
    $(document).ajaxSend(function() { 
     ajaxCounter++; 
     console.log("New Request! There are " + ajaxCounter + " requests running."); 
    }).ajaxComplete(function() { 
     ajaxCounter--; 
     console.log("Request finished! There are " + ajaxCounter + " requests running."); 
    }); 
}); 
関連する問題