jQuery.active la fonction

j'essayais de trouver plus d'informations sur la fonction jQuery suivante:

jQuery.active

il est décrit pour tester le nombre de connexions actives à un serveur et va évaluer true lorsque le nombre de connexions est zéro.

Je n'ai pu trouver aucune information sur cette fonction sur le site de jQuery et je me demandais si quelqu'un savait où je pouvais.

90
demandé sur Ivar 2010-06-30 14:11:46

2 réponses

il s'agit d'une variable jQuery utilisations internes, mais n'avait aucune raison de se cacher, il est donc là pour utiliser. Juste un heads up, il devient jquery.ajax.active prochaine version . Il n'y a pas de documentation parce que c'est exposé mais pas dans L'API officielle, beaucoup de choses sont comme ça en fait, comme jQuery.cache (où tout jQuery.data() va).

je suppose ici par usage" réel usage dans la bibliothèque, il semble être là exclusivement pour soutenir $.ajaxStart() et $.ajaxStop() (mais ils ne se soucient que si c'est 0 ou pas quand une requête commence ou s'arrête. Mais, puisqu'il n'y a aucune raison de le cacher, il est exposé à vous pouvez voir le nombre réel de simultané requêtes AJAX actuellement en cours.


quand jQuery commence une requête AJAX, cela arrive :

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

c'est ce qui provoque le $.ajaxStart() événement à l'incendie, le nombre de connexions vient de passer de 0 à 1 ( jQuery.active++ n'est pas 0 après celui-ci, et !0 == true ), cela signifie le premier de l'actuel simultané requêtes lancées. La même chose arrive à l'autre extrémité. Quand une requête AJAX s'arrête (parce que de a beforeSend abandon via return false ou un appel ajax complete fonction exécute ):

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

c'est ce qui provoque le $.ajaxStop() événement à l'incendie, le nombre de demandes est descendu à 0, ce qui signifie le dernier simultané appel AJAX terminé. Le autres global AJAX handlers feu ici le long du chemin aussi bien.

153
répondu Nick Craver 2010-06-30 10:54:44

pour toute personne essayant d'utiliser jQuery.active avec les requêtes JSONP (comme je l'étais) vous aurez besoin de l'activer avec ceci:

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

gardez à l'esprit que vous aurez besoin d'un délai sur votre requête JSONP pour détecter les échecs.

19
répondu Sean Bannister 2012-09-16 11:21:55