2012-09-11 11 views
5

मेरे आवेदन पर जब उपयोगकर्ता एक रिपोर्ट अनुरोध करता है तो jquery AJAX (.load() का उपयोग करके) कॉल को उस फ़ाइल में बनाया जाता है जो बहुत सी संख्या क्रंचिंग और mySQL अनुरोध करता है। लोड में 5-6 सेकेंड लगते हैं और .ajaxStart() और .ajaxStop() लोड के दौरान लोडिंग gif प्रदर्शित करने के लिए नियोजित होते हैं।रद्द किए गए AJAX अनुरोध के बाद नेविगेशन

मुद्दा: एक उपयोगकर्ता 'रिपोर्ट उत्पन्न' बटन पर क्लिक करता

हैं और फिर अपने मन बदल और एक पृष्ठ पर आवेदन रुक जाता है नेविगेट करने के लिए प्रयास करता है, और 5-6 के लिए नए पृष्ठ पर नेविगेट नहीं है सेकंड। मैं लोडिंग gif को हटाने से कह सकता हूं कि .ajaxStop() किसी नए पृष्ठ पर नेविगेट करने का प्रयास करते समय तत्काल आग लगती है, लेकिन ऐसा लगता है कि ब्राउज़र अगले पृष्ठ को लोड करने से पहले AJAX अनुरोध समाप्त हो रहा है।

क्या यह सामान्य व्यवहार है? इस पर कोई फिक्स/पुनर्गठन कैसे करें?

+0

मैंने सोचा कि मैं टिप्पणी करता हूं और आपको बताता हूं, आप अकेले नहीं हैं! मुझे यह सही मुद्दा है। क्रोम के इंस्पेक्टर और फायरबग से, ब्राउज़र ने AJAX का उपयोग करके लंबित नेटवर्क अनुरोधों को रद्द कर दिया है और अगले पृष्ठ के लिए 'लंबित' के रूप में केवल 'नया' अनुरोध है। फिर भी यह वास्तव में दूर जाने के लिए चुनने से पहले 5-10 सेकेंड के लिए अच्छा लगता है। –

+0

यहां वही: जब तक मौजूदा AJAX अनुरोध पूरा नहीं हो जाता तब तक ब्राउजर हमेशा देरी करता है। भले ही प्रतिक्रिया की आवश्यकता नहीं है। – CoreyOConnor

+0

क्या आप किसी भी पुस्तकालय का उपयोग कर रहे हैं जो क्रॉस-डोमेन अनुरोध के माध्यम से ओपनआईडी प्रमाण-पत्र जोड़ता है? – CoreyOConnor

उत्तर

0

मेरा मानना ​​है कि .azaxStop() केवल पहले AJAX अनुरोध को रद्द कर देता है यदि पहले से कॉलबैक झूठी वापसी करता है। इस मामले में, कॉल शुरू नहीं किया गया है और सर्वर को कोई अनुरोध नहीं मिला है। एक बार अनुरोध सर्वर पर भेजा गया है, जब तक यह वापस नहीं आता है तब तक पृष्ठ पर अनुरोध पर नियंत्रण नहीं होता है। पेज से दूर नेविगेट करते समय .ajaxStop() अनुरोध आग लगती है क्योंकि आखिरी AJAX कॉल किया जाता है, अगर कोई सफलतापूर्वक पूरा हो जाता है और इसलिए निष्पादन को समाप्त करता है।

AJAXStop ईवेंट भी ट्रिगर किया गया है यदि अंतिम बकाया अजाक्स अनुरोध पहले से कॉलबैक फ़ंक्शन के भीतर झूठी लौटकर रद्द कर दिया गया है।

ऊपर .ajaxStop() कमांड के लिए jquery api वेबसाइट से एक अंश है। ऐसा प्रतीत होता है कि एक बार कॉल किया गया है और अनुरोध भेजा गया है कि आपका सर्वर कॉल पूरा कर रहा है भले ही उपयोगकर्ता किसी दूसरे पृष्ठ पर जा रहा हो। यदि यह कॉल का बड़ा हिस्सा है, तो यह आपके द्वारा अनुभव की देरी का कारण बन सकता है।

उम्मीद है कि इससे मदद मिलती है।

+2

मेरा मानना ​​है कि वे अधिक चिंतित हैं कि ब्राउज़र अभी भी AJAX अनुरोध को वापस लौटने का इंतजार कर रहा है, भले ही वे किसी अन्य पृष्ठ पर नेविगेट करने का प्रयास कर रहे हों। हां, सर्वर को रोका नहीं जा सकता है और बिना किसी अनुरोध के अनुरोध को संसाधित करेगा; लेकिन ब्राउजर को _caring_ को रोकना चाहिए था। अनुरोध वापस आने का इंतजार नहीं करना चाहिए। –

संबंधित मुद्दे