এটি প্রায় সর্বদা সত্য। তবে একটি উল্লেখযোগ্য পার্থক্য হ'ল onreadystatechangeইভেন্ট হ্যান্ডলারটি readyState==4সেই ক্ষেত্রে onerrorহ্যান্ডলারটি সাধারণত চালিত হয় (সাধারণত একটি নেটওয়ার্ক সংযোগ সমস্যা)। এটি এক্ষেত্রে 0 এর একটি স্ট্যাটাস পায়। আমি যাচাই করেছি সর্বশেষতম ক্রোম, ফায়ারফক্স এবং আইই তে হয়।
সুতরাং আপনি যদি onerrorআধুনিক ব্রাউজারগুলি ব্যবহার করছেন এবং লক্ষ্যবস্তু করছেন তবে আপনার ব্যবহার করা উচিত নয় onreadystatechangeতবে onloadপরিবর্তে ব্যবহার করা উচিত , যা এইচটিটিপি অনুরোধ সফলভাবে সম্পন্ন হলে (সত্যিকারের প্রতিক্রিয়া এবং স্থিতি কোড সহ) কেবলমাত্র কল করার গ্যারান্টিযুক্ত বলে মনে হয়। অন্যথায় আপনি ত্রুটিগুলির ক্ষেত্রে দুটি ইভেন্ট হ্যান্ডলারগুলি ট্রিগার করা শেষ করতে পারেন (যা আমি এই বিশেষ ক্ষেত্রে সম্পর্কে উত্সর্গীয়ভাবে জানতে পেরেছি))
এখানে আমি লিখেছিলাম একটি প্লঙ্কার পরীক্ষা প্রোগ্রামের একটি লিঙ্ক এখানে আপনাকে বিভিন্ন ইউআরএল পরীক্ষা করতে এবং ইভেন্টগুলির আসল ক্রম দেখতে দেয় এবংreadyState এবং বিভিন্ন ক্ষেত্রে জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন দ্বারা দেখা মানগুলির । জেএস কোডটিও নীচে তালিকাবদ্ধ রয়েছে:
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();
}