asp.net - एएक्सपीएनईटी एमवीसी एक्शन के लिए एजेक्स अनुरोध के दौरान नेटवर्क अनुरोध का समय होने पर क्या होता है




ajax asp.net-mvc (2)

अनुरोध "असफल" होगा, जिसका अर्थ है कि यह आपके onError अनुरोध की onError स्थिति में प्रवेश करेगा। स्थिति कोड तब 0 होगा, क्योंकि वास्तविक स्थिति कोड (उदाहरण 200 ओके या 500 आंतरिक सर्वर त्रुटि) निर्धारित करने के लिए सर्वर से कोई प्रतिक्रिया नहीं है।

जैसा कि शीर्षक में बताया गया है, मैं जानना चाहता हूं कि जब कोई एजेएक्स अनुरोध एक नियंत्रक की कार्रवाई के लिए भेजा जाता है, और इस समय के दौरान, अनुरोध पूर्ण होने से पहले कुछ एमएस के लिए एक नेटवर्क का समय समाप्त होता है।

Reply from <Server IP>: bytes=32 time=31ms TTL=122
Request timed out
Reply from <Server IP>: bytes=32 time=28ms TTL=122

टाइमआउट को ध्यान में रखते हुए कुछ एमएस के लिए ही होता है, मेरे एजेएक्स अनुरोध पर इसका क्या असर होगा?

यह एक ऐसी समस्या के निरंतरता में है जिसे हम अपने आवेदन में सामना कर रहे हैं जैसा कि इस प्रश्न में बताया गया है और मैं जानना चाहूंगा कि क्या वे किसी तरह से संबंधित हैं।

मैं इसी तरह के मुद्दों के लिए googled है, लेकिन उपयोगी कुछ भी नहीं मिल सकता है

संपादित करें: AJAX पर प्रभाव के अलावा, क्या यह क्रिया पद्धति के व्यवहार (सर्वर) को प्रभावित करेगा?


चाहे समयबाह्य केवल कुछ एमएस या अधिक के लिए होता है, अनुरोध विफल हो जाएगा आपके AJAX अनुरोध की success कॉलबैक फ़ंक्शन निष्पादित नहीं की जाएगी और अनुरोध complete कॉलबैक फ़ंक्शन के निष्पादन के साथ समाप्त होगा। डिफ़ॉल्ट रूप से, सभी AJAX अनुरोधों में 0 एमएमएस (असीमित) का समय समाप्त होगा, लेकिन यह ब्राउज़र के डिफ़ॉल्ट समयबाह्य को प्रभावित करेगा।

जब एक AJAX अनुरोध समय बाहर आता है, तो error कॉलबैक फ़ंक्शन का उपयोग किया जाएगा। इस फ़ंक्शन का दूसरा तर्क एक प्रकार की त्रुटि का वर्णन करने वाला स्ट्रिंग है और इस स्थिति में, यह मान timeout होगा आप इस कॉलबैक फ़ंक्शन को प्रबंधित करके और समयबद्ध मान को निर्दिष्ट करके अनुरोध समय-सीमा को संभाल कर सकते हैं (यदि निर्दिष्ट नहीं है, तो डिफ़ॉल्ट मान पर काम करता है) AJAX अनुरोध निकाय में:

$.ajax({
    ...
    timeout: 5000, //specify the timeout value in milliseconds
    error: function(jqXHR, textStatus, errorThrown) {
        if(textStatus==="timeout") {
           //code to execute when timeout occurs
        } 
    }
});​

साथ ही, आप यह भी जांच सकते हैं कि अनुरोध का समय समाप्त हो गया है कि complete कॉलबैक फ़ंक्शन (जैसा कि ऊपर दिखाया गया है) में दूसरा तर्क है जो एक स्ट्रिंग है और यह मान timeout यदि अनुरोध का समय समाप्त हो गया है।

इसके अलावा, यह ध्यान रखें:

टाइमआउट अवधि उस बिंदु पर शुरू होती है, जो $ .एजैक्स कॉल बनती है; यदि कई अन्य अनुरोध प्रगति पर हैं और ब्राउज़र के पास कोई कनेक्शन उपलब्ध नहीं है, तो अनुरोध भेजा जा सकता है कि यह समय भेजा जा सके।

अनुरोध समय सीमाएं आमतौर पर अपने डिफ़ॉल्ट पर छोड़ दी जाती हैं या टाइमआउट विकल्प के साथ विशिष्ट अनुरोधों के लिए अधिलेखित किए जाने के बजाय $ .ajaxSetup () का उपयोग करके वैश्विक डिफ़ॉल्ट के रूप में सेट की जाती हैं।

मैं आपको दूसरे विकल्प के पीछे रहस्य खोजने के लिए एक वैकल्पिक HTTP / s ट्रैफ़िक मॉनिटरिंग टूल जैसे कि फिल्डलर का उपयोग करने का सुझाव देता हूं।

अधिक जानकारी: jQuery के AJAX प्रलेखन







asp.net-mvc-2