2011-10-03 13 views
6

मैं $.get() अनुरोध करता है कि मैं एक विफलता कॉलबैक शामिल करने के लिए refactor करने के लिए की जरूरत का एक सेट है। अनुरोधसमझौता jQuery के jqXHR

$.get(url, 
     {}, 
     function(data) {//success, do work 
     //work 
     },'json');//or 'html' 

jQuery एपीआई के अनुसार, मैं बस एक jqHXR ऑब्जेक्ट जोड़ता हूं। तो मेरे मामले में, मैं मुझे क्या करना चाहिए

var jqxhr = $.get(url, 
      {}, 
      function(data) {//success, do work 
      //work 
      },'json').error(function() { alert("error"); });//or 'html' 

मैं the example में दूसरी सफलता कॉलबैक के लिए कारण समझ में नहीं आता विश्वास करते हैं। मुझे लगता है कि यह एक कॉलबैक श्रृंखला स्थापित करने के लिए हो सकता है। मैं त्रुटि में निष्पादित करने में त्रुटि, और सफलता पर निष्पादन की सफलता चाहता हूं। तो, क्या यह सही है?

+0

पृष्ठ पर कौन सा उदाहरण? क्षमा करें, मैं उस चीज़ का पता नहीं लगा सकता जिसका आप उल्लेख कर रहे हैं। –

+0

तीसरे कोड नमूना की तरह दिखता है। –

+0

जब आप पृष्ठ को दबाते हैं तो 'jqXHR ऑब्जेक्ट' शीर्षक वाले अनुभाग की तलाश करें। उस शीर्षक के नीचे सीधे उदाहरण वह है जिसका मैं जिक्र कर रहा हूं। –

उत्तर

11

मुझे लगता है कि उदाहरण में दूसरी सफलता कॉलबैक यह है कि इस वाक्यविन्यास का उपयोग करके, आप success, error, और complete ईवेंट के लिए एकाधिक हैंडलर रख सकते हैं। मानक jQuery .ajax() विधि में, आप इन घटनाओं में से प्रत्येक को केवल एक हैंडलर असाइन कर सकते हैं। मैं एक उदाहरण है कि कई संचालकों की आवश्यकता होगी की बेतकल्लुफ़ नहीं सोच सकते हैं, लेकिन यह

$.get('my_url.php') 
    .success(handlerOne) 
    .success(handlerTwo); 
बजाय

$.get('my_url.php', function(data, textStatus, jqXHR) { 
    handlerOne(data, textStatus, jqXHR); 
    handlerTwo(data, textStatus, jqXHR); 
}); 

उपयोग करने के लिए एक छोटे से स्पष्ट और अधिक मानक jQuery मुहावरा की तरह प्रतीत होता है आपका मामला, हालांकि, यह कथन को $.ajax() में कनवर्ट करने के लिए आसान और क्लीनर हो सकता है। $.ajax() वाक्यविन्यास शायद अधिकांश jQuery प्रोग्रामर के लिए अधिक परिचित है, और चूंकि आपको अन्य वाक्यविन्यास में उपलब्ध विशेष कार्यक्षमता (एकाधिक हैंडलर, पोस्ट-अनुरोध हैंडलर असाइनमेंट) की आवश्यकता नहीं है, इसलिए $.ajax():

का उपयोग न करने का कोई कारण नहीं है
$.ajax({ 
    url: url, 
    success: function(data) { 
     // success, do work 
    }, 
    error: function(data) { 
     // error, handle failure 
    }, 
    dataType:'json' 
}); 
+0

मैं सहमत हूं, दूसरा विकल्प बहुत अधिक समझ में आता है। –

+3

मुझे आपके जैसे स्पष्ट कट स्पष्टीकरण मिलते हैं दुर्लभ होते हैं। एपीआई दस्तावेज और आधिकारिक साइट्स सबकुछ के बारे में अत्यधिक जानकारी प्राप्त करती हैं, जिसमें इसकी जगह है, लेकिन वे व्यावहारिकता, या अनुशंसित विकल्पों पर स्पष्ट रूप से जोर नहीं देते हैं। वे बिना किसी उदाहरण के अवशोषण भी देते हैं जो पर्याप्त जमीन को कवर करते हैं। – ahnbizcad

2

कोड आप ठीक होना चाहिए का उपयोग कर रहे हैं। दूसरी सफलता एक और जगह है जहां आप एक सफल विधि को परिभाषित कर सकते हैं। कुछ लोगों को एक $.get() में पारित करने के बजाय jqxhr सफलता का उपयोग, और दूसरों को आस्थगित वस्तु ने किया हैंडलर का उपयोग भी ऐसा ही करने।

+0

जावास्क्रिप्ट में चीजों को करने के कई तरीके, और वैकल्पिक वाक्यविन्यास पर निहित मौन मेरे लिए सीखने का सबसे भ्रमित हिस्सा है। – ahnbizcad

+0

@gwho इसका सबसे अच्छा समाधान स्रोत पर जाना है। अक्सर प्रलेखन बस –

+1

मुझे लगता है स्रोत मेटा प्रोग्रामिंग की वजह से और भी अधिक भ्रामक है, और एक ही कारण के लिए एपीआई स्पष्टीकरण भ्रमित कर रहे हैं पर्याप्त नहीं है। मुझे लगता है कि अच्छे स्पष्ट उदाहरण हैं जो विवरण को दूर करते हैं, और आपको महत्वपूर्ण महत्वपूर्ण और सबसे आम पहलुओं के साथ छोड़ देते हैं, सूचना का संदेश देने का सबसे आसानी से अवशोषित तरीका है। यह सिर्फ मेरा ले लो है।मुझे लगता है कि क्या आप स्रोत पढ़ सकते हैं, आप पहले से ही काफी अच्छे हैं कि एकाधिक वाक्यविन्यास के बारे में भ्रमित न हों। – ahnbizcad

4

यह पृष्ठ कैसे jqXHR (jQuery एक्सएचआर) एक्सएचआर (XMLHttpRequest) से अलग है पर दस्तावेज़ीकरण का एक बहुत है।

http://api.jquery.com/jQuery.ajax/#jqXHR

संबंधित मुद्दे