2013-08-15 5 views
6

मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जिसमें कई स्क्रिप्ट हैं जिन्हें मैं नहीं बदल सकता। ये स्क्रिप्ट पृष्ठ AJAX के माध्यम से अद्यतन करें। जब अद्यतन पूरा हो जाता है तो मुझे कुछ कोड चलाने की आवश्यकता होती है।कोई XMLHttpRequest पूर्ण होने पर फ़ंक्शन कैसे चलाया जाए?

क्या कोई ऐसी घटना है जो किसी XMLHttpRequest पूर्ण होने पर आग लगती है? (या कोई XMLHttpRequest राज्य परिवर्तन?)।

दुर्भाग्य से मैं अनुरोध करने के लिए उपयोग की गई विशिष्ट XMLHttpRequest ऑब्जेक्ट तक नहीं पहुंच सकता।

धन्यवाद,

+4

यदि आप विशेष रूप से कहा AJAX के लिए jQuery का उपयोग कर रहे हैं, हाँ। ajaxComplete। –

+0

@ केविनबी का सुझाव केवल तभी काम करेगा जब आपके नियंत्रण में नहीं होने वाली स्क्रिप्ट jQuery AJAX पर भरोसा करती है। – Christophe

+0

@ क्रिस्टोफ़े यही है कि केविनबी की टिप्पणी कहती है - 'यदि आप विशेष रूप से jQuery के लिए jQuery का उपयोग कर रहे हैं ** AJAX **, ' – Ian

उत्तर

15

jQuery के बिना, आप समय में प्रत्येक एक्सएचआर वस्तु की readystatechange घटनाओं के लिए एक श्रोता संलग्न करने के लिए एक्सएचआर वस्तु open एड है open विधि हुक कर सकते हैं। सुनिश्चित करें से पहले किसी भी अजाक्स होता है निम्नलिखित कोड चलाता है:

// save the real open 
var oldOpen = XMLHttpRequest.prototype.open; 

function onStateChange(event) { 
    // fires on every readystatechange ever 
    // use `this` to determine which XHR object fired the change event 
} 

XMLHttpRequest.prototype.open = function() { 
    // when an XHR object is opened, add a listener for its readystatechange events 
    this.addEventListener("readystatechange", onStateChange) 

    // run the real `open` 
    oldOpen.apply(this, arguments); 
} 

वैकल्पिक रूप से, अगर आप केवल सफल load घटनाओं के बारे में परवाह है, तो आप उस घटना के लिए बजाय readystatechange के श्रोता कर सकते हैं।

+0

बहुत बढ़िया, यह सही काम करता है! – MCM

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