jquery AJAX फ़ंक्शन का उपयोग करके, मैं कुछ ऐसा कर सकता हूं:सर्वर प्रतिक्रिया के आधार पर jquery.ajax() त्रुटि कॉलबैक कैसे ट्रिगर करें, HTTP 500 नहीं?
$.ajax({
url: url,
type: 'GET',
async: true,
dataType: 'json',
data: data,
success: function(data) {
//Handle server response here
},
error: function(xhr, status, error){
//Handle failure here
}
});
मुझे उपरोक्त कोड के आधार पर पूछने के लिए दो प्रश्न हैं:
jquery.ajax()
error
कॉलबैक कहलाएगा ??क्या होगा यदि सर्वर मुझे स्ट्रिंग संदेश के साथ एक जेसन ऑब्जेक्ट प्रतिक्रिया देता है " त्रुटि है"। जिसका अर्थ है कि अनुरोध अभी भी सफलतापूर्वक भेज रहा है, लेकिन मुझे सर्वर प्रतिक्रिया
{message: "There is an error"}
मिला है।
मुझे कोई फर्क नहीं पड़ता कि स्ट्रिंग वैल्यू सर्वर का क्या जवाब है, अगर ग्राहक को सर्वर की प्रतिक्रिया मिलती है, तो jquery.ajax()success
कॉलबैक किसी भी तरह से ट्रिगर किया जाएगा।
मैं यह पूछना चाहता हूं कि सर्वर विशेष रूप से {message: 'There is an error'}
जैसे स्ट्रिंग मान के साथ एक JSON ऑब्जेक्ट लौटाता है, सर्वर कुछ ऐसा कर सकता है ताकि यह प्रतिक्रिया jquery.ajax()error
कॉलबैक में success
कॉलबैक के बजाय संभाला जा सके ?
एक अलग अलग स्थान में हैंडलररर क्यों परिभाषित करें? इसे इस तरह की इनलाइन को परिभाषित न करें: 'त्रुटि: हैंडलर = फ़ंक्शन (xhr, स्थिति) {// हैंडल सर्वर प्रतिक्रिया यहां} ' – dallin
@ डेलिन क्योंकि यह आपको कोड डुप्लिकेट करने की अनुमति नहीं देता है। सर्वर कोड 200 के साथ प्रतिक्रिया दे सकता है जो "सफलता" कॉलबैक को ट्रिगर करता है। या, 400, 404, या 500 जैसे खराब कोड "त्रुटि" कॉलबैक को ट्रिगर करेंगे। दोनों स्थितियों में आप शायद एक केंद्रीकृत तरीके से त्रुटि को संभालना चाहते हैं। –
@ माइकलबटलर मुझे लगता है कि आप गलत सुझाव दे सकते हैं कि मैं क्या सुझाव दे रहा था। मुझे विश्वास है कि आप त्रुटि संपत्ति में सीधे हैंडलरर नामक एक फ़ंक्शन को परिभाषित कर सकते हैं (त्रुटि: handleError = function (xhr, status))। यह आपको अभी भी फ़ंक्शन को मैन्युअल रूप से कॉल करने और केंद्रीयकृत स्थान में त्रुटि को संभालने की अनुमति देता है। यह चीजों को केंद्रीकृत करने, एजेक्स कॉल में सीधे त्रुटि को संभालने में रखेगा। यहां सरलीकृत उदाहरण के साथ एक jsfiddle है: http://jsfiddle.net/dhq01bLv/ – dallin