ajax - JQuery के लोड()विधि में त्रुटि कैसे पकड़ें




error-handling load (5)

इलेक्ट्रिक टूलबॉक्स में एक लेख है जिसे "jQuery AJAX के साथ सामग्री लोड करना और विफलताओं से निपटना" कहा जाता है जो आपके प्रश्न का उत्तर देता है।

जाहिरा तौर पर आपके द्वारा निर्दिष्ट कॉलबैक फ़ंक्शन प्रतिक्रिया, स्थिति और XmlHttpRequest ऑब्जेक्ट को पारित कर देता है, जिससे आप अपने ऐजैक्स अनुरोध की स्थिति निर्धारित कर सकते हैं और तदनुसार स्थिति को संभाल सकते हैं।

जब उपयोगकर्ता किसी बटन पर क्लिक करता है तो मैं कुछ डेटा पुनर्प्राप्त करने के लिए jQuery के .load() विधि का उपयोग कर रहा हूं।

लोड सफलतापूर्वक पूरा होने के बाद, मैं परिणाम को <div> में दिखाता हूं।

समस्या है, कभी-कभी डेटा पुनर्प्राप्त करते समय load() में त्रुटि होती है।

मैं load() में त्रुटि कैसे पकड़ सकता हूं?


लोड () प्रलेखन।

कैसे लोड त्रुटि होती है पर बस एक छोटी सी पृष्ठभूमि ...

$("body").load("/someotherpath/feedsx.pxhp", {limit: 25}, 
    function (responseText, textStatus, req) {
        if (textStatus == "error") {
          return "oh noes!!!!";
        }
});

संपादित करें: टिप्पणियों के अनुसार अनुरोध किए गए रूट पथ के अलावा एक पथ जोड़ा गया।


लोड करने के लिए कॉलबैक () फ़ंक्शन के रूप में Waलफूर वेज के सुझाव के अलावा, आप "वैश्विक" त्रुटि हैंडलर (पृष्ठ पर सभी एजाक्स कॉल के लिए वैश्विक रूप में वैश्विक) दर्ज कर सकते हैं।

वैश्विक अजाक्स त्रुटि संचालकों को पंजीकृत करने के कम से कम दो तरीके हैं:

ajaxError() साथ सिर्फ त्रुटि हैंडलर रजिस्टर करें:

$.ajaxError(function(event, request, settings) {
      alert("Oops!!");
});

या, एक ही समय में एक त्रुटि हैंडलर और अन्य गुण सेट करने के लिए ajaxSetup() का उपयोग करें:

$.ajaxSetup({
    timeout: 5000,
    error: function(event, request, settings){
        alert("Oops!");
    }
});

लोड () एक कॉलबैक प्रदान करता है।

वापस कॉल करें।
जब अजाक्स अनुरोध पूरा हो (आवश्यक सफलता नहीं) कहा जाता है।

इस तरह से इसका IIRC किया गया। (इसका परीक्षण नहीं किया है)

$("#feeds").load("feeds.php", {limit: 25}, 
    function (responseText, textStatus, XMLHttpRequest) {
        // XMLHttpRequest.responseText has the error info you want.
        alert(XMLHttpRequest.responseText);
});

HTML5 साथ आप अजाक्स और jQuery के साथ फाइल अपलोड कर सकते हैं। इतना ही नहीं, आप फ़ाइल सत्यापन (नाम, आकार, और एमआईएमई प्रकार) कर सकते हैं या एचटीएमएल 5 प्रगति टैग (या एक div) के साथ प्रगति घटना को संभाल सकते हैं। हाल ही में मुझे एक फाइल अपलोडर बनाना पड़ा, लेकिन मैं Flash और इफ्रेम या प्लगइन्स का उपयोग नहीं करना चाहता था और कुछ शोध के बाद मैं समाधान के साथ आया था।

एचटीएमएल:

<form enctype="multipart/form-data">
    <input name="file" type="file" />
    <input type="button" value="Upload" />
</form>
<progress></progress>

सबसे पहले, यदि आप चाहें तो आप कुछ सत्यापन कर सकते हैं। उदाहरण के लिए, फ़ाइल की ऑन चेंज घटना में:

$(':file').on('change', function() {
    var file = this.files[0];
    if (file.size > 1024) {
        alert('max upload size is 1k')
    }

    // Also see .name, .type
});

अब अजाक्स बटन के क्लिक के साथ जमा करें:

$(':button').on('click', function() {
    $.ajax({
        // Your server script to process the upload
        url: 'upload.php',
        type: 'POST',

        // Form data
        data: new FormData($('form')[0]),

        // Tell jQuery not to process data or worry about content-type
        // You *must* include these options!
        cache: false,
        contentType: false,
        processData: false,

        // Custom XMLHttpRequest
        xhr: function() {
            var myXhr = $.ajaxSettings.xhr();
            if (myXhr.upload) {
                // For handling the progress of the upload
                myXhr.upload.addEventListener('progress', function(e) {
                    if (e.lengthComputable) {
                        $('progress').attr({
                            value: e.loaded,
                            max: e.total,
                        });
                    }
                } , false);
            }
            return myXhr;
        }
    });
});

जैसा कि आप देख सकते हैं, HTML5 (और कुछ शोध) फ़ाइल अपलोडिंग के साथ न केवल संभव हो सकता है लेकिन सुपर आसान है। इसे Google क्रोम के साथ आज़माएं क्योंकि उदाहरण के कुछ HTML5 घटक प्रत्येक ब्राउज़र में उपलब्ध नहीं हैं।





jquery ajax error-handling load