निर्धारित करें कि $ .ajax त्रुटि एक समयबाह्य है


205

मैं के जादू का उपयोग कर रहा हूँ jQuery.ajax( settings )

हालांकि, मैं सोच रहा हूं कि क्या किसी ने टाइमआउट सेटिंग के साथ खेला है?

मुझे पता है कि यह मूल रूप से अनुरोध के लिए स्थानीय समय निर्धारित करने के लिए है, लेकिन क्या टाइमआउट तक पहुंचने पर यह कुछ भी ट्रिगर कर सकता है? या यह केवल एक प्रतिक्रिया के लिए सुनना बंद कर देता है?

JQuery साइट को पढ़ना, मैं देख सकता हूं कि कोई तर्क पारित नहीं हुआ है, इसलिए यह एक क्षमता के साथ एक साधारण सेटिंग की तरह लगता है। जो ठीक है।

लेकिन, अगर टाइमआउट हो जाता है, तो मैं एक अलर्ट या कुछ फ़ंक्शन को ट्रिगर करना चाहता हूं। मैं देख सकता हूं कि इस स्थिति में त्रुटि सेटिंग ट्रिगर नहीं होती है।

यहाँ मेरा स्निपेट है:

$("form#testform").submit(function(){ 

 var allFormValues = $("form#testform").serialize(); 

   $.ajax({
    cache:false,
    timeout:8000,  // I chose 8 secs for kicks
    type:"POST",
    url:"someurl.php",
    data:allFormValues,
    error:function(){ alert("some error occurred") },
    success:function(response){ alert(response); }
   });

});

क्या किसी को पता है कि टाइमआउट के साथ अधिक काम कैसे करना है?

जवाबों:


356

यदि आपकी त्रुटि घटना हैंडलर तीन तर्क (xmlhttprequest, textstatus, और संदेश) लेता है जब एक टाइमआउट होता है, तो स्थिति arg 'टाइमआउट' होगी।

प्रति jQuery प्रलेखन :

दूसरे तर्क के लिए संभावित मान (शून्य के अलावा) "टाइमआउट", "त्रुटि", "नोटमोडिफाइड" और "पार्सररोर" हैं।

आप फिर उसी के अनुसार अपनी त्रुटि को संभाल सकते हैं।

मैंने यह फिडेल बनाया जो इसे प्रदर्शित करता है।

$.ajax({
    url: "/ajax_json_echo/",
    type: "GET",
    dataType: "json",
    timeout: 1000,
    success: function(response) { alert(response); },
    error: function(xmlhttprequest, textstatus, message) {
        if(textstatus==="timeout") {
            alert("got timeout");
        } else {
            alert(textstatus);
        }
    }
});​

JsFiddle के साथ, आप अजाक्स कॉल का परीक्षण कर सकते हैं - यह जवाब देने से पहले 2 सेकंड प्रतीक्षा करेगा। मैंने टाइमआउट सेटिंग को 1 सेकंड पर रखा है, इसलिए इसे त्रुटि रहित करना चाहिए और त्रुटि हैंडलर को 'टाइमआउट' का एक टेक्स्टस्टैट पास करना चाहिए।

उम्मीद है की यह मदद करेगा!


3
खुशी है कि यह काम किया! हाँ, वे प्रलेखन में उन स्थिति मूल्यों को छिपाते हैं।
डेविड होएस्टर

102
वे प्रलेखन में बहुत कुछ छिपाते हैं।
आरोन

4
@JochemKuijpers Fiddler 2 सेकंड प्रतीक्षा करेगा, इसलिए 1 सेकंड का समय पूरा होता है। पढ़ें ....
रिकाजाह

2
क्या आप बता सकते हैं कि x, t, m var क्या हैं?
बार्ट

3
(x) mlhttprequest, (t) extstatus, और (m)
निबंध
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.