क्या कोई मेरी मदद कर सकता है?
मैं successऔर .done()के बीच के अंतर को समझने में सक्षम नहीं हूं $.ajax।
यदि संभव हो तो कृपया उदाहरण दें।
क्या कोई मेरी मदद कर सकता है?
मैं successऔर .done()के बीच के अंतर को समझने में सक्षम नहीं हूं $.ajax।
यदि संभव हो तो कृपया उदाहरण दें।
जवाबों:
संक्षेप में, अजाक्स फ़ंक्शन से सफलता कॉलबैक फ़ंक्शन को डिकूप करना ताकि बाद में आप मूल कोड (पर्यवेक्षक पैटर्न) को संशोधित किए बिना अपने स्वयं के हैंडलर जोड़ सकें।
कृपया यहाँ से अधिक विस्तृत जानकारी प्राप्त करें: https://stackoverflow.com/a/14754681/1049184
success: एक पैरामीटर के .success()रूप में और एक विधि के रूप में उपयोग किए जाने के बीच एक अंतर है jqXHR। बाद में पदावनत किया जा रहा है, लेकिन पूर्व वही है जिसके बारे में ओपी पूछ रहा था।
successAJAX कॉल सफल होने पर ही आग लगती है, यानी अंततः 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 के साथ अधिक सुसंगत हैं।
.donejQuery के शुरुआती (और अब मृत-अंत) स्टैब क्या बन गया 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है।