2016-03-30 5 views
7

मेरे पास jquery .post() विधि के माध्यम से HTTP अनुरोध पोस्ट करने के लिए यह कोड ब्लॉक है।कैसे बताना है कि AJAX अनुरोध विफल रहा है?

$.post("/product/update", formPostData) 
.done(function (data) { 
    // success 
    alert(data.product_id + ' was updated!'); 
}) 
.fail(function (data) { 
    // fail, but which request? 
}); 

जब यह सफल हुआ यह पता करने के लिए जो अनुरोध कर हम, के साथ काम कर रहे हैं के बाद से json सर्वर द्वारा लौटाए 'product_id' है कि मैं जरूरत है आसान है।

लेकिन अगर यह किसी त्रुटि के कारण विफल रहता है जिसमें सर्वर उत्तरदायी नहीं है, उदाहरण के लिए कनेक्टिविटी समस्या, मैं कैसे बता सकता हूं कि कौन सा अनुरोध विफल रहा है?

data ऑब्जेक्ट में कोई संकेत नहीं है क्योंकि इसमें केवल सर्वर प्रतिक्रिया है।

मैं .fail() हैंडलर को मान कैसे पास कर सकता हूं ताकि मैं निर्धारित कर सकूं कि कौन सा अनुरोध विफल रहा है?

+0

क्या आपका मतलब है कि आप इस फ़ॉर्म को 'फॉर्मपोस्टडाटा' के लिए अलग-अलग मानों के साथ बुला रहे हैं और आप नहीं जानते कि कौन सी कॉल विफल रही है? – LinuxDisciple

+2

आपका क्या मतलब है "कौन सा अनुरोध विफल हुआ"? आप केवल एक अनुरोध के लिए कोड दिखा रहे हैं। यदि आप '.fail() 'फ़ंक्शन को दबाते हैं, तो आप जानते हैं कि यह' पोस्ट 'है कि विफल' असफल 'से जुड़ा हुआ है। –

+1

बस बंद करें का उपयोग करें। – Bergi

उत्तर

8

this ऑब्जेक्ट यहां उपयोगी है। तुम वहाँ से this.data पार्स और अपनी पोस्ट के बारे में जानकारी प्राप्त करने के लिए सक्षम होना चाहिए:

.fail(function (jqXHR, textStatus, errorThrown) { 
    console.log(this.data); 
}); 
+2

'this.url' में अनुरोध का यूआरएल होगा। –

+2

https://jsfiddle.net/c88t233u/1/ <- उदाहरण fiddle –

+2

@ जोएनोस 'फॉर्मपोस्टडाटा' पोस्ट किया गया डेटा है। यह 'असफल' में पहुंच योग्य होगा। –

1

एक अन्य विकल्प एक्सएचआर वस्तु ही लिखते थे जा, और फिर इसे fail विधि में आप के लिए वहाँ है, और आप की आवश्यकता नहीं होगी बंद करने का उपयोग करने के लिए:

var obj = { a: 1 }; 
var xhr = $.post("/product/update", obj) 
    .done(function (data) {}) 
    .fail(function (jqXHR, textStatus, errorThrown) { 
     console.log(this.data); // The raw string a=1 which was posted 
     console.log(jqXHR.postData); // The {a: 1} javascript object 
    }); 
xhr.postData = obj; 
+0

यह बहुत उपयोगी है। आपका बहुत बहुत धन्यवाद। –

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