XMLHttpRequest 對象是 Ajax 的關(guān)鍵。它從 2000 年 7 月發(fā)布的 IE 5.5 開始可用,但是直到 2005 年 Ajax 和 Web 2.0 變得流行起來它都沒有完全被發(fā)覺。
XMLHttpRequest (XHR) 是一個可以用 JavaScript,JScript,VBScript 和其他 Web 瀏覽器腳本語言傳輸和操作 XML 數(shù)據(jù),以及使用 HTTP 從 Web 服務(wù)器上在網(wǎng)頁客戶端和服務(wù)端之間建立一個獨立連接通道的 API。
調(diào)用 XMLHttpRequest 返回的數(shù)據(jù)通常都由后端數(shù)據(jù)庫提供。除了 XML 之外,XMLHttpRequest 還可以用來獲取其他格式的數(shù)據(jù),例如 JSON 或者是純文本。
我們已經(jīng)見過好幾個講述如何創(chuàng)建 XMLHttpRequest 對象的例子了。
下面列出的是一些我們必須熟悉的方法和屬性。
1、abort()
取消當(dāng)前請求。
2、getAllResponseHeaders()
返回整套 HTTP 頭字符串。
3、getResponseHeader( headerName )
返回指定 HTTP 頭的值。
4、
open( method, URL )
open( method, URL, async )
open( method, URL, async, userName )
open( method, URL, async, userName, password )
指定請求的方法,URL 以及其他可選屬性。
方法參數(shù)可以是 "GET","POST" 或者 "HEAD" 中的一個值。也可以是其他 HTTP 方法,比如 "PUT" 和 "DELETE"(主要用于 REST 應(yīng)用程序中)。
"async" 參數(shù)指定該請求是否應(yīng)該異步處理。"true" 意味著腳本處理發(fā)生在 send() 方法之后而不必等待響應(yīng),而 "false" 意味著繼續(xù)腳本處理之前腳本要等待響應(yīng)。
5、send( content )
發(fā)送請求。
6、setRequestHeader( label, value )
給 HTTP 頭添加一個標簽/值對進行發(fā)送。
1、onreadystatechange
一個用于事件的事件處理程序,每個狀態(tài)變化時都會觸發(fā)。
2、readyState
readyState 屬性定義了 XMLHttpRequest 對象的當(dāng)前狀態(tài)。
下面的表格提供了一個 readyState 屬性可能值的列表:
狀態(tài) | 描述 |
---|---|
0 | 請求還未初始化。 |
1 | 請求已經(jīng)建立。 |
2 | 請求已經(jīng)發(fā)送。 |
3 | 請求正在處理。 |
4 | 請求已經(jīng)完成。 |
readyState = 0
在 XMLHttpRequest 對象創(chuàng)建之后,但是在我們調(diào)用 open() 方法之前。
readyState = 1
在調(diào)用 open() 方法之后,但是在調(diào)用 send() 之前。
readyState = 2
在我們調(diào)用 send() 之后。
readyState = 3
在瀏覽器建立與服務(wù)器的通信之后,但是在服務(wù)器完成響應(yīng)之前。
readyState = 4
在請求完成以及響應(yīng)數(shù)據(jù)已經(jīng)完全從服務(wù)器接受之后。
3、responseText 返回響應(yīng)字符串。
4、responseXML
返回響應(yīng)的 XML 數(shù)據(jù)。這個屬性返回一個 XML 文檔對象,我們可以使用 W3C DOM 節(jié)點樹方法和屬性檢查并解析它。
5、status
返回狀態(tài)數(shù)字(比如 404 表示 "Not Found" 或者 200 表示 "OK")。
6、statusText
返回狀態(tài)字符串(比如 "Not Found" 或者 "OK")。