2013-02-18 9 views
5

जहां तक ​​मैं the documentation से बता सकता हूं, $.ajax() कॉल से प्रतिक्रिया को संभालने के दो अलग-अलग तरीके हैं।jquery AJAX: कॉलबैक हुक बनाम सेटिंग फ़ंक्शंस का उपयोग कब करें?

1) $.ajax() के सेटिंग में पारित कर दिया कार्यों के साथ वस्तु:

$.ajax({ 
    success: function(){ ... }, 
    error: function(){ ... } 
}); 

2) chainable "कॉलबैक हुक"

$.ajax({...}) 
    .done(function(){ ... }) 
    .fail(function(){ ... }) 

क्या के बीच महत्वपूर्ण अंतर हैं इन दो दृष्टिकोण, और मुझे एक दूसरे को कब चुनना चाहिए?

उत्तर

1

यदि आप सीधे कॉल में फ़ंक्शन को जोड़ रहे हैं, तो उपयोग में बहुत अंतर नहीं है। अंतर तब आता है जब आप कहीं और कॉलबैक फ़ंक्शन चाहते हैं।

function callForMe(callback) { 
    $.ajax({ 
    url: '...', 
    success: callback 
    }); 
} 

callForMe(function(data){ 
    // handle the response 
}); 

वापसी एक विधि से वादा, बाद में प्रतिक्रिया की प्रतीक्षा:

एक विधि में कॉलबैक फ़ंक्शन भेजा जा रहा है

function callFormMe() { 
    return $.ajax({ 
    url: '...' 
    }); 
} 

var promise = callForMe(); 
// later on: 
promise.done(function(data){ 
    // handle the response 
}); 
+0

पीछे की ओर, यह मुझे स्पष्ट होना चाहिए मुझे लगता है ... लेकिन स्पष्ट स्पष्टीकरण और उदाहरणों के लिए धन्यवाद। –

1

मैं हमेशा नई आस्थगित वस्तु का उपयोग (यानी चेनबल .done, .fail आदि) संस्करण, हालांकि कई मामलों में कोड की लंबाई में कोई बचत नहीं है।

कारण यह है कि यह मुझे decouple प्रतिक्रिया के बाद के हैंडलिंग से AJAX कॉल करने के विवरण की अनुमति देता है।

  1. सार दूर डाटा प्रोसेसिंग से प्राप्त करने में कठिनाई
  2. कई संचालकों जोड़ने के लिए, के बाद भी AJAX कॉल AJAX के सहायकों की जरूरत नहीं है कि पर
  3. उपयोग .fail संचालकों पूरा डेटा:

    decoupling मुझे करने की अनुमति देता error: मापदंडों

  4. उपयोग .pipe पोस्ट-प्रक्रिया के लिए अन्य संचालकों के लिए उस पर गुजर
  5. synchr से पहले डेटा अन्य एसिंक्रोनस घटनाओं के साथ

और सभी को सीधे AJAX कॉल पर कॉलबैक पास करने के बिना।

this answer देखें जहां मैंने लाभों के अधिक ठोस उदाहरण दिए।

+0

सिर्फ इस टिप्पणी के साथ सहमत होने पर @ गफा से टिप्पणी करने और पूछने वाला था। मेरे लिए एक उपयोग को याद रखना मेरे लिए बहुत आसान है। क्या आप किसी भी परिस्थिति के बारे में सोच सकते हैं जहां अन्य दृष्टिकोण के लिए एक सराहनीय लाभ होगा? यदि नहीं, तो मैं तुम्हारे साथ नाव में जा रहा हूं। –

+0

पुरानी शैली पर स्थगित दृष्टिकोण के कई लाभ हैं और यह आपको उन चीजों को करने देता है जिन्हें आप पुरानी 'सफलता:' स्टाइल हैंडलर के साथ आसानी से नहीं कर सकते हैं। – Alnitak

+0

बढ़िया, बस [अपना अन्य उत्तर] पढ़ें (http://stackoverflow.com/a/14754681/6782) भी (+1), अच्छी चीजें। टीआईएल –