XMLHttpRequest
的錯(cuò)誤處理機(jī)制主要涉及到 onerror
事件處理器。當(dāng) XMLHttpRequest
對象在嘗試打開一個(gè)連接、發(fā)送請求或接收響應(yīng)時(shí)發(fā)生錯(cuò)誤,就會觸發(fā)這個(gè)事件。
以下是一個(gè)基本的錯(cuò)誤處理流程:
var xhr = new XMLHttpRequest();
XMLHttpRequest
對象的 error
事件設(shè)置一個(gè)事件處理器。這個(gè)處理器會在發(fā)生錯(cuò)誤時(shí)被調(diào)用。xhr.onerror = function() {
console.error('An error occurred while making the request.');
};
open
方法來打開一個(gè)到服務(wù)器的連接。這個(gè)方法接受三個(gè)參數(shù):請求的類型(如 “GET” 或 “POST”)、請求的 URL 和一個(gè)布爾值(表示是否異步)。xhr.open('GET', 'https://api.example.com/data', true);
send
方法來發(fā)送請求。如果請求是 POST 請求,你還需要在這個(gè)方法中傳遞要發(fā)送的數(shù)據(jù)。xhr.send();
在這個(gè)例子中,如果 https://api.example.com/data
無法訪問(例如,由于網(wǎng)絡(luò)問題或服務(wù)器錯(cuò)誤),onerror
事件處理器就會被觸發(fā)。
需要注意的是,onerror
事件只會在請求本身發(fā)生錯(cuò)誤時(shí)被觸發(fā),而不會在響應(yīng)處理過程中發(fā)生錯(cuò)誤時(shí)被觸發(fā)。如果你需要在響應(yīng)處理過程中檢測錯(cuò)誤,你可以使用 onreadystatechange
事件,并檢查 XMLHttpRequest
對象的 status
屬性。例如:
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) { // 請求已完成
if (xhr.status >= 200 && xhr.status < 300) { // 請求成功
console.log(xhr.responseText);
} else { // 請求失敗
console.error('Request failed with status ' + xhr.status);
}
}
};
在這個(gè)例子中,如果服務(wù)器返回了一個(gè)非 2xx 的狀態(tài)碼,onreadystatechange
事件處理器就會被觸發(fā),并打印出一個(gè)錯(cuò)誤消息。