XMLHttpRequest 對象用于與服務(wù)器交換數(shù)據(jù)。
主流瀏覽器(Chrome,F(xiàn)irefox,IE7 +,Edge,Safari,Opera)都具有內(nèi)置 XMLHttpRequest 對象。
XMLHttpRequest 通過與后臺的 Web 服務(wù)器交換數(shù)據(jù),來異步更新局部網(wǎng)頁,而不必刷新整個頁面。
在客戶端和服務(wù)器之間執(zhí)行 AJAX 通信之前,首先要做的是示例化一個 XMLHttpReques t對象,如下所示:
var httpRequest = new XMLHttpRequest();測試看看?/?
出于安全原因,瀏覽器不允許跨域訪問。也就是當(dāng)前網(wǎng)頁和 ajax 要請求的網(wǎng)頁地址要在同一個域名下。
(cainiaoplus.com)上的實(shí)例都是與(cainiaoplus.com)域中的地址交互。
如果要在自己的網(wǎng)頁上使用上面的示例,則請求的目標(biāo)地址必須位于您自己的服務(wù)器上。
Internet Explorer的舊版本(6和更早版本)使用的是ActiveX對象而不是XMLHttpRequest對象。
要處理IE6及更早版本,請檢查瀏覽器是否支持該XMLHttpRequest對象,否則創(chuàng)建一個ActiveX對象:
var httpRequest; if (window.XMLHttpRequest) { // 目前主流的瀏覽器(Chrome, Mozilla, Safari, IE7+, ...) httpRequest = new XMLHttpRequest(); } else if (window.ActiveXObject) { // <= IE 6 或早期IE版本 httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); }測試看看?/?
下表列出了XMLHttpRequest對象的所有屬性:
屬性 | 描述 |
---|---|
onreadystatechange | 定義當(dāng)readyState屬性更改時要調(diào)用的函數(shù) |
readyState |
保持XMLHttpRequest的狀態(tài): 0:請求未初始化 1:服務(wù)器連接建立 2:收到請求 3:處理請求 4:請求完成并且響應(yīng)準(zhǔn)備就緒 |
responseText | 以字符串形式返回響應(yīng)數(shù)據(jù) |
responseXML | 將響應(yīng)數(shù)據(jù)作為XML數(shù)據(jù)返回 |
status |
返回請求的狀態(tài)號: 200:“OK” 403:“Forbidden” 404:“Not Found” 有關(guān)完整列表,請?jiān)L問HTTP狀態(tài)代碼參考 |
statusText | 返回狀態(tài)文本(例如,“OK”或“Not Found”) |
下表列出了XMLHttpRequest對象的所有方法:
方法 | 描述 |
---|---|
new XMLHttpRequest() | 創(chuàng)建一個新的XMLHttpRequest對象 |
abort() | 取消當(dāng)前請求 |
getAllResponseHeaders() | 返回標(biāo)題信息 |
getResponseHeader() | 返回特定的標(biāo)頭信息 |
open(method, url, async) |
指定請求 method:請求類型GET或POST url:文件位置 async:true(異步)或false(同步) |
send() |
將請求發(fā)送到 用于GET請求的服務(wù)器 |
send(string) |
將請求發(fā)送到服務(wù)器。 用于POST請求 |
setRequestHeader(header, value) |
將HTTP標(biāo)頭設(shè)置為請求 header:指定標(biāo)頭名稱 value:指定標(biāo)頭值 |