鍍金池/ 教程/ HTML/ Ajax XMLHttpRequest
Ajax 技術(shù)
Ajax 安全
Ajax 示例
Ajax 瀏覽器支持
Ajax 實戰(zhàn)
Ajax XMLHttpRequest
什么是 Ajax?
Ajax 數(shù)據(jù)庫操作
Ajax 相關(guān)問題

Ajax XMLHttpRequest

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 對象的例子了。

下面列出的是一些我們必須熟悉的方法和屬性。

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ā)送。

XMLHttpRequest 屬性

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")。