2009-08-17 17 views
12

यह पता चला कि यह फ़ायरबग बग का एक आर्टेफैक्ट था। अजाक्स अनुरोध रद्द कर दिया गया था, लेकिन फायरबग ने इसे सक्रिय रूप से रिपोर्ट करना जारी रखा। विवरण hereएक jQuery को छोड़कर getJSON XMLHttpRequest


मेरे पास लंबे समय तक XMLHttpRequests चल रहा है और मुझे कुछ परिस्थितियों में उन्हें निरस्त करने में सक्षम होना चाहिए।

मैं एक सामान्य तरीके से अनुरोध की स्थापना: बाद में

ajax = $.getJSON(url + "?updates", function(data) { ...; }); 

मैं इस अनुरोध निरस्त करना चाहते पर, सीधा लगता है:

ajax.abort(); 

जब मैं तथापि Firebug में देखो, मैं इसे देखना अभी भी चल रहा है ...

मैं ajax का मूल्य बाहर console.log बस से पहले मैं कोशिश करते हैं और यह गर्भपात, यह पुष्टि की है कि अपने मूल्य और XMLHttpRequest (0 से readyState के साथ)।

क्या XML औरttortRequest पर abort() आग लगने पर प्रतिबंध है?

+0

क्या एफएफ संस्करण? –

+0

संस्करण लिनक्स 3.0.13 –

उत्तर

2

कॉलिंग निरस्त वस्तु ऑब्जेक्ट को रीसेट करता है; onreadystatechange घटना हैंडलर हटा दिया गया है, और readyState बदल दिया गया है 0 (uninitialized)।

मैं इसे अनुरोध ही रद्द नहीं लगता कि, यह सिर्फ किसी भी प्रतिक्रिया (ईवेंट हैंडलर से छेड़छाड़) पर ध्यान नहीं देता है - लेकिन मैं सच में इसे बाहर अभी तक की कोशिश फ्लॉप।

लेकिन यह आपको निश्चित रूप से ऑब्जेक्ट का पुन: उपयोग करने की अनुमति देगा - इससे कोई फर्क नहीं पड़ता कि ब्राउजर के पुराने अनुरोध के साथ कुछ धागा काम कर रहा है या नहीं।

+1

है जो आप उद्धृत कर रहे हैं? –

+0

आह! समस्या यह है कि मैं बहुत से http अनुरोधों के साथ समाप्त होता हूं और ब्राउज़र लटकता है, इसलिए मुझे इसे समाप्त करने की आवश्यकता है ... –

+0

उद्धरण Microsoft जावास्क्रिप्ट docu से है। इससे मुझे लगता है कि यह ब्राउज़र कार्यान्वयन पर निर्भर करता है कि वास्तव में क्या चल रहा है।अधिकतर ब्राउज़र शायद शानदार ढंग से खत्म करने का प्रयास करेंगे - इस प्रकार कनेक्शन अभी भी बंद होने तक कुछ समय तक हो सकता है - लेकिन यह सिर्फ एक अनुमान है। – Niko

0

jquery AJAX Queue/Cache/Abort/Block Manager पर एक नज़र डालें, शायद यह आपको वर्तमान स्थिति को रोकने में मदद कर सकता है।

2

आप JSONP-Plugin इस प्लगइन आप मैन्युअल रूप से अनुरोध निरस्त करने की क्षमता है के साथ पर एक नज़र लग सकता है। इसके अलावा आईबीएम की तकनीकी पुस्तकालय में "a cautionary note" पर एक नज़र डालें:

सबसे पहले, वहाँ JSONP कॉल के लिए से निपटने के कोई त्रुटि है। यदि गतिशील स्क्रिप्ट सम्मिलन कार्य करता है, तो आपको कॉल किया जाता है; यदि नहीं, कुछ भी नहीं होता है। यह चुपचाप विफल रहता है। उदाहरण के लिए, आप सर्वर से 404 त्रुटि पकड़ने में सक्षम नहीं हैं। न ही आप अनुरोध को रद्द या पुनरारंभ कर सकते हैं।