यह लगभग हमेशा सत्य है। हालांकि, एक महत्वपूर्ण अंतर यह है कि ऑनरस्टेस्टेन्डेशन इवेंट हैंडलर उन मामलों में तैयार स्तर == 4 के साथ ट्रिगर हो जाता है जहां पर आतंकवादी हैंडलर आमतौर पर ट्रिगर होता है (आमतौर पर नेटवर्क कनेक्टिविटी समस्या)। इस मामले में 0 की स्थिति मिलती है। मैंने सत्यापित किया है कि यह नवीनतम क्रोम, फ़ायरफ़ॉक्स और आईई पर होता है।
तो यदि आप आतंक का उपयोग कर रहे हैं और आधुनिक ब्राउज़र को लक्षित कर रहे हैं, तो आपको पहले से ही एक्सचेंज का उपयोग नहीं करना चाहिए, बल्कि इसके बजाय ऑनलोड का उपयोग करना चाहिए, जो केवल HTTP अनुरोध सफलतापूर्वक पूरा होने पर वास्तविक प्रतिक्रिया और स्थिति के साथ ही कहा जा सकता है कोड)। अन्यथा आप त्रुटियों के मामले में दो इवेंट हैंडलर ट्रिगर कर सकते हैं (उदाहरण के लिए मैंने इस विशेष मामले के बारे में अनुभव किया है।)
यहां Plunker test program का एक लिंक है, मैंने लिखा है कि आप विभिन्न यूआरएल का परीक्षण करने और देखने को देखते हैं विभिन्न मामलों में जावास्क्रिप्ट ऐप द्वारा देखी गई घटनाओं और तैयार स्टेटस मानों का वास्तविक अनुक्रम। जे एस कोड भी नीचे सूचीबद्ध है:
var xhr;
function test(url) {
xhr = new XMLHttpRequest();
xhr.addEventListener("readystatechange", function() { log(xhr, "readystatechange") });
xhr.addEventListener("loadstart", function(ev) { log(xhr, "loadstart", ev.loaded + " of " + ev.total) });
xhr.addEventListener("progress", function(ev) { log(xhr, "progress", ev.loaded + " of " + ev.total) });
xhr.addEventListener("abort", function() { log(xhr, "abort") });
xhr.addEventListener("error", function() { log(xhr, "error") });
xhr.addEventListener("load", function() { log(xhr, "load") });
xhr.addEventListener("timeout", function(ev) { log(xhr, "timeout", ev.loaded + " of " + ev.total) });
xhr.addEventListener("loadend", function(ev) { log(xhr, "loadend", ev.loaded + " of " + ev.total) });
xhr.open("GET", url);
xhr.send();
}
function clearLog() {
document.getElementById('log').innerHTML = '';
}
function logText(msg) {
document.getElementById('log').innerHTML += msg + "<br/>";
}
function log(xhr, evType, info) {
var evInfo = evType;
if (info)
evInfo += " - " + info ;
evInfo += " - readyState: " + xhr.readyState + ", status: " + xhr.status;
logText(evInfo);
}
function selected(radio) {
document.getElementById('url').value = radio.value;
}
function testUrl() {
clearLog();
var url = document.getElementById('url').value;
if (!url)
logText("Please select or type a URL");
else {
logText("++ Testing URL: " + url);
test(url);
}
}
function abort() {
xhr.abort();
}
स्रोत
2013-10-08 12:41:29
किसी को भी एक उदाहरण टिप्पणी है कि यह async = false (xhr.open 3 तर्क) उपयोग कर रहा है के रूप में इस पर देख रहा है, तो - जो आम तौर पर नहीं है कि आप क्या चाहते चाहते हैं। – eddiewould