jQuery.active関数


102

次のjQuery関数に関する詳細情報を見つけようとしました。

jQuery.active

サーバーへのアクティブな接続の数をテストするために説明されており、接続の数がゼロの場合にtrueと評価されます。

この関数に関する情報をjQueryサイトで見つけることができず、誰かが私がどこにいるのか知っているのではないかと思っていました。

回答:


163

これはjQueryが内部で使用する変数ですが、非表示にする理由がなかったため、使用する必要があります。ただのヘッドアップ、それはjquery.ajax.active次のリリースになります。それはですので、何のドキュメントはありません暴露のような、しかし、公式のAPIには、物事の多くは、実際にこのようにしているではないjQuery.cache(すべてのは、どこjQuery.data()行きます)。

ここでは、ライブラリの実際の使用状況から推測していますが、サポート$.ajaxStart()$.ajaxStop()(さらに説明します)のためだけにあるようですが、リクエストが開始または停止したときに、それが0かどうかだけが気になります。しかし、非表示にする理由はないため、公開されているため、現在進行中の同時 AJAX要求の実際の数を確認できます。


jQueryがAJAXリクエストを開始すると、次のようになります。

if ( s.global && ! jQuery.active++ ) {
  jQuery.event.trigger( "ajaxStart" );
}

これが$.ajaxStart()イベントを発生させる原因であり、接続数は0から1になりました(jQuery.active++この接続の後は0ではありません!0 == true)。これは、現在の同時要求の最初の開始を意味します。反対側でも同じことが起こります。AJAXリクエストが停止したとき(via によるbeforeSend中止return falseまたはajax呼び出しcomplete関数の実行により):

if ( s.global && ! --jQuery.active ) {
  jQuery.event.trigger( "ajaxStop" );
}

これにより、$.ajaxStop()イベントが発生し、リクエストの数が0になりました。つまり、最後の同時 AJAX呼び出しが終了しました。他のグローバルAJAXハンドラのほか、道に沿ってそこでの火災。


2
私はそれが忍者(2010)にブックjQueryの初心者で説明しました
jmav

@Nick:.ajaxStopの説明に従って、すべてのajax呼び出しが完了した後に実行されます。ただし、すべてのajax呼び出しが完了した場合に呼び出されます。私が間違っている場合、私を訂正してください。
Kishore Relangi 2013年

27
これは現在、と呼ばれてい$.activeます。
Ryan Bigg 2013

4
@RyanBiggは$単にのエイリアスではないjQueryので、どちらもまだ正しいですか?
arxpoetica 16

2
@ArxPoetica jQueryなしで実行している場合のみnoConflict
Ryan Bigg 2016

19

JSONPリクエストでjQuery.activeを使用しようとしている人は(私がそうでしたように)、これを有効にする必要があります。

jQuery.ajaxPrefilter(function( options ) {
    options.global = true;
});

失敗をキャッチするには、JSONPリクエストでタイムアウトが必要になることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.