jQuery.active फ़ंक्शन


102

मैं निम्नलिखित jQuery फ़ंक्शन पर कुछ और जानकारी खोजने की कोशिश कर रहा था:

jQuery.active

यह एक सर्वर से सक्रिय कनेक्शनों की संख्या का परीक्षण करने के लिए वर्णित है और कनेक्शन की संख्या शून्य होने पर सही मूल्यांकन करेगा।

मैं jQuery साइट पर इस फ़ंक्शन के बारे में कोई जानकारी नहीं पा रहा था और सोच रहा था कि क्या कोई जानता है कि मैं कहाँ हो सकता हूं।

जवाबों:


163

यह एक वैरिएबल jQuery का आंतरिक रूप से उपयोग करता है, लेकिन छिपाने का कोई कारण नहीं था, इसलिए इसका उपयोग करना है। बस एक सिर, यह jquery.ajax.activeअगली रिलीज हो जाता है । कोई दस्तावेज नहीं है क्योंकि यह उजागर है लेकिन आधिकारिक एपीआई में नहीं है, बहुत सारी चीजें वास्तव में इस तरह हैं, जैसे jQuery.cache(जहां सभीjQuery.data() जाते हैं)।

मैं यहाँ पुस्तकालय में वास्तविक उपयोग के बारे में अनुमान लगा रहा हूँ , ऐसा लगता है कि यह विशेष रूप से समर्थन करने के लिए है $.ajaxStart()और $.ajaxStop()(जो मैं आगे बताऊंगा), लेकिन वे केवल तभी ध्यान रखते हैं जब कोई अनुरोध शुरू हो या रुक जाए। लेकिन, इसे छिपाने के लिए कोई कारण नहीं है के बाद से, यह आप के संपर्क में है देख सकते हैं की वास्तविक संख्या एक साथ AJAX अनुरोध वर्तमान में चल रहा है।


जब jQuery AJAX अनुरोध शुरू करता है, तो यह होता है :

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

यह वह $.ajaxStart()घटना है जो आग का कारण बनती है , कनेक्शन की संख्या केवल 0 से 1 तक चली गई ( jQuery.active++यह एक के बाद 0 नहीं है, और !0 == true), इसका मतलब है कि एक साथ चालू अनुरोधों में से पहला शुरू हुआ। यही बात दूसरे छोर पर भी होती है। जब एक AJAX अनुरोध (की वजह से बंद हो जाता है एक beforeSendके माध्यम से बीच में बंद करेंreturn false या एक ajax कॉल completeसमारोह रन ):

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

इस $.ajaxStop()घटना के कारण आग लग गई, अनुरोधों की संख्या 0 हो गई, जिसका अर्थ है एक साथ AJAX कॉल समाप्त होना। अन्य वैश्विक AJAX के संचालकों के साथ-साथ रास्ते में वहाँ में आग।


2
मैंने इसे निंजा (2010) की एक पुस्तक jQuery
Novice

@ निक: आपके .ajaxStop के स्पष्टीकरण के अनुसार हर ajax कॉल पूरा होने के बाद निष्पादित किया जाएगा। लेकिन, यह कहा जाएगा कि सभी अजाक्स कॉल पूरे हो गए थे। अगर मैं गलत हूं तो क्या आप मुझे सही कर सकते हैं?
किशोर रेलांगी

27
इसे अब $.activebtw कहा जाता है ।
रयान बिग

4
@RyanBigg $केवल एक उपनाम नहीं है jQuery, इसलिए दोनों अभी भी सत्य हैं?
arxpoetica 17

2
@ArxPoetica केवल अगर आप jQueryबिना चला रहे हैं noConflict
रायन बिग

19

JSONP अनुरोधों के साथ jQuery.active का उपयोग करने की कोशिश करने वाले किसी भी व्यक्ति के लिए (जैसे मैं था) आपको इसके साथ सक्षम करने की आवश्यकता होगी:

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

ध्यान रखें कि विफलताओं को पकड़ने के लिए आपको अपने JSONP अनुरोध पर टाइमआउट की आवश्यकता होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.