javascript - ब्राउज़र को एजेक्स कॉल के लिए इंतजार करने के बाद भी पूरा करने की प्रतीक्षा है(jQuery)




xmlhttprequest onbeforeunload (4)

क्या आप सुनिश्चित हैं कि आप एक एस्कायोनस अनुरोध का उपयोग कर रहे हैं? अगर ब्राउज़र पूरे अनुरोध के दौरान ब्लॉक करता है, तो आप एक तुल्यकालिक अनुरोध का उपयोग कर रहे हैं (async पैरामीटर गलत है)

मेरे पास कुछ (संभावित) लंबे समय से चलने वाले एजेक्स कॉल हैं जो मैं निरस्त करना चाहूंगा अगर उपयोगकर्ता दूसरे पेज पर जाएंगे निम्नलिखित jQuery कोड को सभी लंबित XMLHttpRequest ऑब्जेक्ट्स को पृष्ठ से दूर नेविगेट करने पर रोकें:

$.ajaxSetup({
    beforeSend: function(xhr) {
        $(window).bind('beforeunload', function() {
            xhr.abort();
        });
    }
});

एक परीक्षण के मामले में, मैं सर्वर-साइड ऑपरेशन पर 10-सेकंड का इंतजार करने के लिए मजबूर करता हूं। फायरबग का उपयोग करके, मैंने पुष्टि की है कि उपरोक्त कोड वास्तव में सभी लंबित एजेक्स कॉलों को तुरंत बंद करने के कारण होता है जब मैं पृष्ठ पर कोई भी लिंक क्लिक करता हूं। हालांकि, ब्राउज़र अभी भी अगले पृष्ठ पर जाने से पहले 10 सेकंड का इंतजार कर रहा है। आईई एक ही व्यवहार को प्रदर्शित करने के लिए प्रतीत होता है क्या यह एक ज्ञात ब्राउज़र व्यवहार है? क्या कुछ ऐसा है जो मैं उपयोगकर्ता को इस स्थिति में तत्काल पृष्ठ से दूर नेविगेट करने की इजाजत देता हूं? अग्रिम में धन्यवाद।


हो सकता है कि आप गर्भपात के अजीब दुष्प्रभाव को जांचना चाहें ()

जब गर्भपात () पद्धति का उपयोग किया जाता है, तो एक्सप्लोरर और मोज़िला में तैयारस्टेटेज घटना आग लग जाती है। इससे भी बदतर, readyState = 4, जिसका अर्थ है कि औसत XMLhttp स्क्रिप्ट मानती है कि डेटा को सही ढंग से लोड किया गया है। यह बहुत अजीब प्रभाव दे सकता है

यहां प्रलेखित:

http://www.quirksmode.org/blog/archives/2005/09/xmlhttp_notes_a_1.html


सर्वर समस्या यह है कि अपाचे / पीएचपी सर्वर के साथ मैं काम कर रहा हूं। उस स्क्रिप्ट पर session_start हटाया गया जिसकी उसे आवश्यकता नहीं थी (एजेएक्स) और सब कुछ अपेक्षित के रूप में काम कर रहा है टोड के लिए धन्यवाद, जिन्होंने एक ऐसी समस्या की ओर इशारा किया!


स्वीकृत उत्तर के लिए संदर्भ:

http://improve.dk/optimizing-performance-programmatically-setting-readonlysessionstate/

के बारे में IRequiresSessionState

इसका अर्थ यह है कि, किसी दिए गए सत्र के लिए, केवल एक ही अनुरोध एक साथ चल सकता है। किसी भी अन्य अनुरोध, उसी सत्र से, ब्लॉक हो जाएगा, सत्र के रिलीज होने की प्रतीक्षा कर रहा है





abort