अपने सभी अनुरोधों की एक सरणी कतार बनाएं। फिर यदि आपको कोई ऐसा बिंदु मिलता है जहां आपको सभी मौजूदा अनुरोधों को निरस्त करने की आवश्यकता है तो आप सरणी के माध्यम से लूप कर सकते हैं और सभी लंबित अनुरोधों पर निरस्त कॉल कर सकते हैं। बहुत सरल होना चाहिए।
हालांकि दूसरा तरीका केवल एक आंतरिक ध्वज रखना है जो इंगित करता है कि अनुरोध वर्तमान में प्रक्रिया में है या नहीं, यदि अनुरोध है तो अनुरोध छोड़ दें। या आप फिट कैसे देखते हैं संभाल लें।
संपादित करें: How to avoid 3 ajax calls?
संपादित करें 2:: यह बहुत इसी तरह की स्थिति के लिए प्रश्न की जाँच करें तो मैं आप क्या कर सकते एक सरणी है कि आप संलग्न अपने सभी ajax कॉल है। जो अनिवार्य रूप से सिर्फ XmlHttpRequest बना रहा है और यही वह है जो अजाक्स कॉल से लौटाया जाता है। तो
requests.push(
$.ajax({
type: 'post',
url: '/test.php',
data: search_data,
success: function(data) {
$('#catalog').html(data);
}
}));
यह आपके अनुरोधों को एक अनुरोध सरणी में जोड़ देगा जिसे आप कहीं भी परिभाषित कर सकते हैं। फिर जब आप सभी लंबित अनुरोधों को मारना चाहते हैं तो आप सरणी के माध्यम से लूप कर सकते हैं और निरस्त कॉल कर सकते हैं जो अनुरोध को मार देगा।
for(var i = 0; i < requests.length; i++)
requests[i].abort();
या सिर्फ अपने कार्य एक झंडा यह बताते हैं कि एक अनुरोध किया जा रहा है यह है कि के बाहर एक चर परिभाषित करते हैं। आप इसे और अधिक विशिष्ट बना सकते हैं और खोज डेटा स्टोर कर सकते हैं और केवल उन अनुरोधों को छोड़ सकते हैं जिनके पास एक ही डेटा के लिए लंबित अनुरोध है और विभिन्न डेटा के लिए अन्य अनुरोधों की अनुमति दें।
उम्मीद है कि आपको शुरू करने के लिए पर्याप्त है।
+1 की तरह कुछ कर रही मैं यह बिल्कुल वैसा ही विधि का उपयोग कर सकते हैं। ('AJAX_request' var name ^^ को छोड़कर) ... और यह ठीक काम करता है! – JoDev
मैंने अभी 'var ajax_request;' 'var ajax_request = new XMLHttpRequest(); 'और यह काम कर रहा है। विचार के लिए +1। – smartrahat