XMLHttpRequest 是 AJAX 的基礎(chǔ)。
XMLHttpRequest 術(shù)語縮寫為XHR,中文可以解釋為可擴(kuò)展超文本傳輸請求。
XMLHttpRequest 對象可以在不向服務(wù)器提交整個頁面的情況下,實(shí)現(xiàn)局部更新網(wǎng)頁。
XMLHttpRequest的對象用于客戶端和服務(wù)器之間的異步通信。
它執(zhí)行以下操作:
• 在后臺從客戶端發(fā)送數(shù)據(jù)
• 從服務(wù)器接收數(shù)據(jù)
• 更新網(wǎng)頁而不重新加載。
所有現(xiàn)代瀏覽器均支持 XMLHttpRequest 對象(IE5 和 IE6 使用 ActiveXObject)。
XMLHttpRequest 用于在后臺與服務(wù)器交換數(shù)據(jù)。這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進(jìn)行更新。
所有現(xiàn)代瀏覽器(IE7+、Firefox、Chrome、Safari 以及 Opera)均內(nèi)建 XMLHttpRequest 對象。
創(chuàng)建 XMLHttpRequest 對象的語法:
variable=new XMLHttpRequest();
老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveX 對象:
variable=new ActiveXObject("Microsoft.XMLHTTP");
為了應(yīng)對所有的現(xiàn)代瀏覽器,包括 IE5 和 IE6,請檢查瀏覽器是否支持 XMLHttpRequest 對象。如果支持,則創(chuàng)建 XMLHttpRequest 對象。如果不支持,則創(chuàng)建 ActiveXObject :
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
XMLHttpRequest對象的屬性
XMLHttpRequest對象的常見屬性如下:
屬性 |
描述 |
---|---|
onreadystatechange |
存儲函數(shù)(或函數(shù)名),每當(dāng)readyState的屬性改變時,就會調(diào)用該函數(shù)。 |
readyState |
存有的XMLHttpRequest的狀態(tài)從0到4發(fā)生變化。 0:請求未初始化 1:服務(wù)器連接已建立 2:請求已接收 3:請求處理中 4:請求已完成,且響應(yīng)已就緒 |
reponseText |
以文本形式返回響應(yīng)。 |
responseXML |
以XML格式返回響應(yīng) |
status |
將狀態(tài)返回為數(shù)字(例如,“Not Found”為404,“OK”為200) |
statusText |
以字符串形式返回狀態(tài)(例如,“Not Found”或“OK”) |
XMLHttpRequest對象的方法
XMLHttpRequest對象的重要方法如下:
方法 |
描述 |
---|---|
abort() |
取消當(dāng)前請求。 |
getAllResponseHeaders() |
以字符串形式返回完整的HTTP標(biāo)頭集。 |
getResponseHeader( headerName ) |
返回指定HTTP標(biāo)頭的值。 |
void open(method,URL) |
打開指定獲取或交的方法和URL的請求。 |
void open(method,URL,async) |
與上面相同,但指定異步或不。 |
void open(method,URL,async,userName,password) |
與上面相同,但指定用戶名和密碼。 |
void send(content) |
發(fā)送獲取請求。 |
setRequestHeader( label,value) |
將標(biāo)簽/值對添加到要發(fā)送的HTTP標(biāo)頭。 |