क्या कोई मेरी मदद कर सकता है?
मैं success
और .done()
के बीच के अंतर को समझने में सक्षम नहीं हूं $.ajax
।
यदि संभव हो तो कृपया उदाहरण दें।
क्या कोई मेरी मदद कर सकता है?
मैं success
और .done()
के बीच के अंतर को समझने में सक्षम नहीं हूं $.ajax
।
यदि संभव हो तो कृपया उदाहरण दें।
जवाबों:
संक्षेप में, अजाक्स फ़ंक्शन से सफलता कॉलबैक फ़ंक्शन को डिकूप करना ताकि बाद में आप मूल कोड (पर्यवेक्षक पैटर्न) को संशोधित किए बिना अपने स्वयं के हैंडलर जोड़ सकें।
कृपया यहाँ से अधिक विस्तृत जानकारी प्राप्त करें: https://stackoverflow.com/a/14754681/1049184
success:
एक पैरामीटर के .success()
रूप में और एक विधि के रूप में उपयोग किए जाने के बीच एक अंतर है jqXHR
। बाद में पदावनत किया जा रहा है, लेकिन पूर्व वही है जिसके बारे में ओपी पूछ रहा था।
success
AJAX कॉल सफल होने पर ही आग लगती है, यानी अंततः HTTP 200 स्थिति देता है। error
यदि यह विफल हो जाता है और complete
जब अनुरोध समाप्त हो जाता है, तो सफलता की परवाह किए बिना।
पर jQuery 1.8 में jqXHR
वस्तु (द्वारा दिया $.ajax
) success
के साथ बदल दिया गया था done
, error
के साथ fail
और complete
साथ always
।
हालाँकि आप अभी भी पुराने वाक्य रचना के साथ AJAX अनुरोध को शुरू करने में सक्षम होना चाहिए। तो ये ऐसी ही बातें करते हैं:
// set success action before making the request
$.ajax({
url: '...',
success: function(){
alert('AJAX successful');
}
});
// set success action just after starting the request
var jqxhr = $.ajax( "..." )
.done(function() { alert("success"); });
यह परिवर्तन jQuery 1.5 की आस्थगित वस्तु के साथ संगतता के लिए है । आस्थगित (और अब Promise
, जिसमें क्रोम और एफएक्स में पूर्ण देशी ब्राउज़र समर्थन है) आपको अतुल्यकालिक कार्यों की श्रृंखला करने की अनुमति देता है:
$.ajax("parent").
done(function(p) { return $.ajax("child/" + p.id); }).
done(someOtherDeferredFunction).
done(function(c) { alert("success: " + c.name); });
फ़ंक्शन की यह श्रृंखला आपके द्वारा प्राप्त कॉलबैक की नेस्टेड पिरामिड की तुलना में बनाए रखना आसान है success
।
हालाँकि, कृपया ध्यान दें कि done
अब इसके बजाय Promise
उपयोग then
करने वाले सिंटैक्स के पक्ष में पदावनत किया गया है :
$.ajax("parent").
then(function(p) { return $.ajax("child/" + p.id); }).
then(someOtherDeferredFunction).
then(function(c) { alert("success: " + c.name); }).
catch(function(err) { alert("error: " + err.message); });
यह गोद लेने के लायक है क्योंकि async
और await
विस्तार वादों सुधार वाक्य रचना (और त्रुटि हैंडलिंग):
try {
var p = await $.ajax("parent");
var x = await $.ajax("child/" + p.id);
var c = await someOtherDeferredFunction(x);
alert("success: " + c.name);
}
catch(err) {
alert("error: " + err.message);
}
success
, jQuery 1.8 में था , जिसे इसके द्वारा बदल दिया गया है done
। वे उसी तरह से काम करते हैं, लेकिन done
बाकी jQuery के साथ अधिक सुसंगत हैं।
.done
jQuery के शुरुआती (और अब मृत-अंत) स्टैब क्या बन गया Promise
और अब इसे काफी व्यापक भाषा समर्थन प्राप्त है। नई परियोजनाओं में मैं const response = await fetch(...)
इसके बजाय उपयोग करूंगा ।
.success()
केवल तभी कहा जाता है जब आपका वेबसर्वर 200 ओके HTTP हेडर के साथ प्रतिक्रिया करता है - मूल रूप से जब सब कुछ ठीक है।
किए गए कॉलबैक () को स्थगित किए जाने पर निकाल दिया जाएगा। आस्थगित खारिज होने पर () विफल होने से जुड़ी कॉलबैक को निकाल दिया जाएगा।
promise.done(doneCallback).fail(failCallback)
.done() has only one callback and it is the success callback
success
वह कॉलबैक है जो अनुरोध के सफल होने पर आह्वान किया जाता है और $.ajax
कॉल का हिस्सा होता है । done
वास्तव में jQuery 1.8 jqXHR
द्वारा $.ajax()
प्रतिस्थापित वस्तु का हिस्सा है , और इसकी जगह success
है।