jQuery $.ajax
विधि पर अजाक्स तैयार राज्यों को कैसे कॉल करें?
उत्तर
$.ajax()
XmlHttpRequest ऑब्जेक्ट, इसलिए यदि आप वास्तव में स्थिति परिवर्तन के रूप में यह तक पहुँचने के लिए चाहते हैं, आप ऐसा कर सकते हैं:
var xhr = $.ajax({ ... });
xhr.onreadystatechange = function() { alert(xhr.readyState); };
लेकिन अंतर्निहित कॉलबैक सब आप सबसे अधिक के लिए की जरूरत होनी चाहिए उपयोग करता है, विशेष रूप से success
और complete
।
ज्यादातर मामलों, .ajaxStart()
और .ajaxStop()
घटनाओं ... के लिए अधिक उचित रूप से पहले अनुरोध आग बातें करने के लिए, beforeSend
उपयोग करें, या उदाहरण के एक लोड हो रहा है संदेश जब भी कोई ajax गतिविधि चल रहा है दिखाने के लिए।
धन्यवाद, मैं इस बाहर की जाँच करेंगे। – tetris
नोट: यह कोड ही काम करता है जब तक jQuery 1.4.4 1.5 के साथ के रूप में ajax मॉड्यूल पूरी तरह से फिर से लिखा गया है। मैं हाल के संस्करण (मैं इसे विलंबता समय परीक्षण करना चाहते हैं) में एक समाधान पता नहीं है। – mgutt
यह एक * रेस स्थिति * है चाहेंगे नहीं - या - jQuery एक वादा उपयोग कर रहा है? – Cody
आप वस्तु आप ajax()
विधि में पारित में success
, error
, और complete
विकल्प के लिए कॉलबैक निर्धारित करके आप सभी की जरूरत प्राप्त करने में सक्षम होना चाहिए। प्रलेखन पर एक नज़र डालें:
http://api.jquery.com/jQuery.ajax/
असल में, यह इस तरह से काम करता है:
$.ajax({
url: 'ajax/test.html',
success: function(data) {
alert('Load was performed.');
},
error: function() {alert("error occurred.")},
complete: function() {alert("ajax complete.")}
});
आप वास्तव में क्या मानकों आप कॉलबैक कार्यों में की पहुंच है के लिये दस्तावेज देख सकते हैं।
क्या im की तलाश में, readyState एक है जैसे कि यह जब आप सादा जे एस का उपयोग करें, आप "लोड हो रहा ..." बस से पहले अपने मार्कअप से भर जाता है, jQuery सफलता, त्रुटि, या पूरा न की तरह कुछ करने लगते हैं लिखने के लिए इस readyState का उपयोग करें मैं जो चाहता हूं उसके लिए काम करें। या क्या आपको सिर्फ jQuery के साथ नकली करना है? – tetris
@tada jQuery विधि तैयार चरणों में जांच के पुराने तरीकों को दूर करता है। AJAX कॉल करने से पहले अपने लोडिंग संवाद को न दिखाएं, और कॉलबैक फ़ंक्शंस में इसे छुपाएं? यह वही है जो मैं करता हूं और तर्कसंगत रूप से सादे जेएस तरीके से ज्यादा समझ में आता है। – treeface
ठीक है धन्यवाद .__ – tetris
विधि, jQuery 2.0.2 के साथ परीक्षण किया:
$.ajax({
beforeSend: function (jqXHR, settings) {
var self = this;
var xhr = settings.xhr;
settings.xhr = function() {
var output = xhr();
output.onreadystatechange = function() {
if (typeof(self.readyStateChanged) == "function") {
self.readyStateChanged(this);
}
};
return output;
};
},
readyStateChanged: function (xhr) {
if (xhr.readyState == 1) {
/* Connected! Do something */
}
},
url: "..."
});
मूल रूप से, मैं क्या जरूरत एक कॉलबैक था के बाद readyState
जब लंबे समय तक मतदान को लागू हो जाता है 1
(कनेक्ट) है, जो, मेरे मामले में, उपयोगी था "पुश "jQuery के साथ अधिसूचनाएं।
बिल्कुल क्या है? '$ .ajax' अपनी स्वयं की 'सफलता' /' त्रुटि'/'पूर्ण 'कॉलबैक लाता है, उन्हें आपकी सभी ज़रूरतों को पूरा करना चाहिए –
हाय, मैं तैयार करना चाहता हूं = 1 और readyState = 4 jQuery वाले के साथ समानताएं क्या हैं? – tetris