2012-06-07 5 views
111

मैं इस तरह कोडित है .fail() का उपयोग करना चाहिए:मैं .done() और सफलता और त्रुटि के बजाय नई jQuery AJAX कोड

$.ajax({ cache: false, 
    url: "/Admin/Contents/GetData", 
    data: { accountID: AccountID }, 
    success: function (data) { 
     $('#CityID').html(data); 
    }, 
    error: function (ajaxContext) { 
     alert(ajaxContext.responseText) 
    } 
}); 

लेकिन जब मैं अंत इसे jQuery .ajax() documentation को देखो मैं नीचे इस तरह कोडिंग किया जाना चाहिए या कम से कम यह एक .done() और एक .fail() जोड़ने का सुझाव सुझाव देने के लिए लगता है:

var request = $.ajax({ cache: false, 
    url: "/Admin/Contents/GetData", 
    data: { accountID: AccountID } 
}); 

request.done(function (data) { 
    xxx; 
}); 
request.fail(function (jqXHR, textStatus) { 
    xxx; 
}); 

अद्यतन

यदि मैं इस तरह कोड करता हूं तो यह वही है या इसे तीन में तोड़ने के लिए कुछ फायदा है?

$.ajax({ cache: false, 
    url: "/Admin/Contents/GetData", 
    data: { accountID: AccountID } 
}).done(function (data) { 
    xxx; 
}).fail(function (jqXHR, textStatus) { 
    xxx; 
}); 

उत्तर

112

के रूप में, user2246674 द्वारा कहा गया ajax समारोह के पैरामीटर के रूप में success और error का उपयोग कर मान्य है।

मिसाल जवाब के साथ संगतता के लिए दस्तावेज़ पढ़ने:

Deprecation Notice:

The jqXHR.success(), jqXHR.error(), and jqXHR.complete() callbacks will be deprecated in jQuery 1.8. To prepare your code for their eventual removal, use jqXHR.done(), jqXHR.fail(), and jqXHR.always() instead.

आप कॉलबैक-हेरफेर समारोह (विधि चेन उदाहरण के लिए उपयोग करते हुए) का उपयोग कर रहे हैं, तो का उपयोग .done(), .fail() और .always() बजाय success(), error() और complete()

+0

यही मैंने सोचा था, लेकिन जब मैंने स्टेटस कोड के बारे में कुछ प्रश्न पोस्ट किए थे, तो पहले मैंने ऐसा करने के बाद भी इसका उल्लेख नहीं किया था। – Alan2

+0

@ गेमा ट्रस्ट देव टीम, अगर वे कहते हैं कि इसे भविष्य के संस्करणों में हटाया जा सकता है और नए लोगों का उपयोग करना बेहतर है, तो नए का उपयोग करें। –

+0

धन्यवाद और हाँ मैं नए तरीके का उपयोग करूंगा। क्या आपने अंत में अपना अपडेट देखा था। मैं सोच रहा हूं कि मेरा आखिरी कोड स्निपेट ऐसा करने का सबसे अच्छा तरीका है या नहीं। मुझे यकीन नहीं है कि कोड को तोड़ने का क्या फायदा है। – Alan2

6

मैं @Michael Laffargue की पोस्ट पर कुछ जोड़ना चाहते हैं:

jqXHR.done() तेजी से होता है!

jqXHR.success() में कॉलबैक में कुछ लोड समय है और कभी-कभी स्क्रिप्ट ओवरकिल कर सकते हैं। मुझे लगता है कि पहले मुश्किल रास्ते पर।

अद्यतन:

का उपयोग jqXHR.done(), jqXHR.fail() और jqXHR.always() आप बेहतर ajax अनुरोध के साथ हेरफेर कर सकते हैं। सामान्य आप किसी चर या ऑब्जेक्ट में AJAX को परिभाषित कर सकते हैं और उस कोड या किसी ऑब्जेक्ट का उपयोग अपने कोड के किसी भी भाग में कर सकते हैं और डेटा तेज़ी से प्राप्त कर सकते हैं। अच्छा उदाहरण:

/* Initialize some your AJAX function */ 
function call_ajax(attr){ 
    var settings=$.extend({ 
     call   : 'users', 
     option   : 'list' 
    }, attr); 

    return $.ajax({ 
     type: "POST", 
     url: "//exapmple.com//ajax.php", 
     data: settings, 
     cache : false 
    }); 
} 

/* .... Somewhere in your code ..... */ 

call_ajax({ 
    /* ... */ 
    id : 10, 
    option : 'edit_user' 
    change : { 
      name : 'John Doe' 
    } 
    /* ... */ 
}).done(function(data){ 

    /* DO SOMETHING AWESOME */ 

}); 
+4

क्या आपके पास कोई विश्वसनीय और सत्यापन योग्य संदर्भ है? –

+0

@ पॉलवर्गस मैं कभी भी कुछ प्रदर्शन परीक्षण नहीं करता लेकिन मेरे अभ्यास में मुझे यह काम करने लगता है। आप अपने आप से कोशिश कर सकते हैं। –

3

सरल शब्दों

$.ajax("info.txt").done(function(data) { 
    alert(data); 
}).fail(function(data){ 
    alert("Try again champ!"); 
}); 

में अगर इसके info.text तो यह सूचित करेंगे और जो कुछ भी समारोह आप जोड़ सकते हैं या यदि कोई हो कैसे असमर्थ तो सर्वर से info.text को पुनः प्राप्त करने के लिए मिल चेतावनी या त्रुटि समारोह।

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