jquery - जेकरी अजाक्स त्रुटि कॉलबैक




ajax (4)

मुझे यहाँ कुछ सुझाव चाहिए या शायद कुछ स्पष्टीकरण चाहिए। मेरे पास jquery ajax कॉल है,

$.ajax({
 type: "GET",
 url: base_url+'/ajax/fetch/counts/',
 dataType: 'json',
 data: {},
 error: function(xhr, error){
        console.debug(xhr); console.debug(error);
 },
 success: display_counts
});

यह ठीक काम कर रहा है। मेरी success कॉलबैक प्रतिक्रिया के साथ सही ढंग से आग। लेकिन, मैंने जो देखा, वह यह है कि मेरी error कॉलबैक को हर बार निकाल दिया जाता है, तब भी जब मेरी कॉल सफलता की स्थिति 200 पर लौटती है। उपरोक्त error कॉलबैक में, मैं देखता हूं कि ऑब्जेक्ट xhr.status 200 है।

क्या कोई समझा सकता है कि क्या गलत है, या यहाँ क्या हो रहा है? error कॉलबैक को केवल तब फायर करना चाहिए जब मेरे पास 404 या शायद गैर-200 प्रतिक्रिया हो। क्या मेरी धारणाएँ सही हैं?

धन्यवाद।


एक हालिया प्रश्न में json jquery के अनुरोधों के साथ समान समस्या थी, अपने json प्रतिक्रिया से आसपास () को हटाने का प्रयास करें।


कुछ चीजें जो मैं सोच सकता हूं:

  1. सुनिश्चित करें कि आपने cache: false सेट करके कैशिंग अक्षम कर दिया है cache: false
  2. यदि आप फ़ायरफ़ॉक्स का उपयोग कर रहे हैं, तो अनुरोध की निगरानी के लिए फायरबग और नेट टैब का उपयोग करने का प्रयास करें
  3. ब्राउज़र के JSON पार्सर पर भरोसा न करें। मैं इसे एक की सिफारिश करूंगा: https://github.com/douglascrockford/JSON-js/blob/master/json2.js JSON के निर्माता से कम नहीं

बस एक सुझाव, इस तरह सही त्रुटि पाने के लिए $.ajaxSetup() का उपयोग करने का प्रयास करें:

$(function() {
    $.ajaxSetup({
        error: function(jqXHR, exception) {
            if (jqXHR.status === 0) {
                alert('Not connect.\n Verify Network.');
            } else if (jqXHR.status == 404) {
                alert('Requested page not found. [404]');
            } else if (jqXHR.status == 500) {
                alert('Internal Server Error [500].');
            } else if (exception === 'parsererror') {
                alert('Requested JSON parse failed.');
            } else if (exception === 'timeout') {
                alert('Time out error.');
            } else if (exception === 'abort') {
                alert('Ajax request aborted.');
            } else {
                alert('Uncaught Error.\n' + jqXHR.responseText);
            }
        }
    });
});

मैं एक jQuery का विशेषज्ञ नहीं हूं, लेकिन मुझे पता है कि प्रोटोटाइप। जेएस, AJAX त्रुटि हैंडलर फायर करता है अगर अनुरोध सफल होता है, लेकिन success हैंडलर एक त्रुटि का कारण बनता है। क्या jQuery में वही है? आप यह देख सकते हैं कि यह क्या है जो try_catch ब्लॉक में display_counts की संपूर्ण सामग्री डालकर हो रहा है।





ajax