XMLHttpRequest
是 JavaScript 中的一個(gè)對(duì)象,用于在瀏覽器中創(chuàng)建異步 HTTP 請(qǐng)求。它允許你與服務(wù)器進(jìn)行數(shù)據(jù)交互,而無(wú)需重新加載整個(gè)頁(yè)面。這在很多現(xiàn)代 Web 應(yīng)用中非常有用,因?yàn)樗峁┝烁玫挠脩趔w驗(yàn)和更快的響應(yīng)時(shí)間。
以下是 XMLHttpRequest
對(duì)象的一些主要方法和屬性:
open(method, url, async)
: 打開(kāi)一個(gè)新的 HTTP 請(qǐng)求。method
是請(qǐng)求方法(如 “GET” 或 “POST”),url
是請(qǐng)求的 URL,async
是一個(gè)布爾值,表示請(qǐng)求是否應(yīng)該異步執(zhí)行。
send(data)
: 發(fā)送 HTTP 請(qǐng)求。如果 method
是 “POST”,則可以將 data
作為請(qǐng)求體發(fā)送。否則,data
通常為空。
onreadystatechange
: 當(dāng)請(qǐng)求的狀態(tài)發(fā)生變化時(shí),會(huì)觸發(fā)此事件。你可以通過(guò)檢查 readyState
屬性的值來(lái)確定請(qǐng)求的當(dāng)前狀態(tài)(如 0、1、2、3 或 4)。
status
: 返回的 HTTP 響應(yīng)的狀態(tài)碼。例如,200 表示成功,404 表示未找到資源等。
responseText
或 responseXML
: 返回的 HTTP 響應(yīng)的內(nèi)容。responseText
是純文本格式,而 responseXML
是 XML 格式。
以下是一個(gè)簡(jiǎn)單的示例,展示了如何使用 XMLHttpRequest
對(duì)象從服務(wù)器獲取數(shù)據(jù):
// 創(chuàng)建一個(gè)新的 XMLHttpRequest 對(duì)象
var xhr = new XMLHttpRequest();
// 設(shè)置請(qǐng)求方法和 URL
xhr.open("GET", "https://api.example.com/data", true);
// 設(shè)置請(qǐng)求完成時(shí)的回調(diào)函數(shù)
xhr.onreadystatechange = function() {
// 檢查請(qǐng)求是否完成(readyState 為 4)且成功(狀態(tài)碼為 200)
if (xhr.readyState === 4 && xhr.status === 200) {
// 將響應(yīng)文本解析為 JSON 對(duì)象
var data = JSON.parse(xhr.responseText);
// 在控制臺(tái)中顯示獲取到的數(shù)據(jù)
console.log(data);
}
};
// 發(fā)送請(qǐng)求
xhr.send();
這個(gè)示例展示了如何使用 XMLHttpRequest
對(duì)象發(fā)起一個(gè)異步 GET 請(qǐng)求,并在請(qǐng)求成功時(shí)處理返回的 JSON 數(shù)據(jù)。類似地,你可以使用 POST
方法發(fā)送包含數(shù)據(jù)的請(qǐng)求,并根據(jù)需要處理返回的數(shù)據(jù)格式(如 XML、JSON 等)。