2010-10-20 10 views
12

पर डेटा प्राप्त करें यदि मैं एक jquery AJAX अनुरोध करता हूं जो सफल है तो मैं अपना JSON डेटा वापस लेता हूं। हालांकि, अगर मैं एक अनुरोध करता हूं और मुझे 200 प्रतिक्रिया कोड के अलावा कुछ और मिलता है, तो मैं वापस Jquery कॉल में डेटा वापस नहीं प्राप्त कर सकता। मुझे डेटा चाहिए क्योंकि इसमें डेटा के बारे में विवरण है।Jquery XHR त्रुटि

success: function (data, tst, xhr) { 
    $.log('XHR OK'); 
}, 
error: function (xhr, tst, err) { 
    $.log('XHR ERROR ' + XMLHttpRequest.status); 
}, 

कोई विचार?

धन्यवाद

+3

आप किस "डेटा" के बारे में बात कर रहे हैं? यदि कोई सर्वर त्रुटि है, तो कोई भी "डेटा" कहां से आएगा (xhr ऑब्जेक्ट में त्रुटि जानकारी के अलावा)? – Pointy

+2

हां, इस तरह की एक JSON प्रतिक्रिया {'त्रुटि': 'आपका खाता नहीं मिला।'} –

उत्तर

18

में:

error: function (xhr, tst, err) { 
    $.log('XHR ERROR ' + XMLHttpRequest.status); 
}, 

आप

error: function (XMLHttpRequest, textStatus, errorThrown) { 
    $.log('XHR ERROR ' + XMLHttpRequest.status); 
    return JSON.parse(XMLHttpRequest.responseText); 
}, 

एक त्रुटि की स्थिति में में JSON उत्तर प्राप्त करने के लिए उपयोग कर सकते हैं।

XMLHttpRequest.responseText 

चीयर्स।

+0

क्या आप नई सफलता/विफल AJAX शैली को शामिल करने के लिए कृपया इस उत्तर को अपडेट कर सकते हैं? – TheJKFever

0

jQuery JSONP plugin की कोशिश करो। यह एक JSON अनुरोध में एक त्रुटि कॉलबैक जोड़ता है जैसे:

$.jsonp({ 
    url: "Your URL", 
    data: {data: "Some Data"}, 
    dataType: 'jsonp', 
    timeout: 2000, 
    success: function(data, status) { 
     // Do something with data here 
    }, 
    error: function(xhr, text_status){ 
     // Handle the server error 
    } 
}); 

यह सर्वर के लिए प्रतीक्षा करने के लिए टाइमआउट का उपयोग करता है। दुर्भाग्यवश, 200 प्रतिक्रिया के अलावा किसी अन्य चीज़ के साथ सर्वर प्रतिक्रिया देने का कोई अन्य तरीका नहीं है।

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