Ø 瀏覽器可以直接從JavaScript中初始化請求并獲取結果。
Ø 本質上是添加了額外的用于發送和接收XML代碼功能的普通HTTP請求。
Ø 像一個 ServletRequest
Ø XMLHttpRequest對象的屬性
屬性名稱
|
描述
|
onreadystatechange
|
指定當readyState屬性改變時的事件處理句柄,只寫 。
|
readyState
|
返回當前請求的狀態,只讀。
|
responseBody
|
將回應信息正文以unsigned byte數組形式返回,只讀。
|
responseStream
|
以Ado Stream對象的形式返回響應信息,只讀 。
|
responseText
|
將響應信息作為字符串返回,只讀 。
|
responseXML
|
將響應信息格式化為Xml Document對象并返回,只讀 。
|
status
|
返回當前請求的http狀態碼,只讀 。
|
statusText
|
返回當前請求的響應行狀態,只讀 。
|
Ø XMLHttpRequest對象的方法
方法名稱
|
描述
|
abort
|
取消當前請求
|
getAllResponseHeaders
|
獲取響應的所有http頭
|
getResponseHeader
|
從響應信息中獲取指定的http頭
|
open
|
創建一個新的http請求,并指定此請求的方法、URL以及驗證信息(用戶名/密碼) //常用
|
send
|
發送請求到http服務器并接收回應 //常用
|
setRequestHeader
|
單獨指定請求的某個http頭
|
XMLHttpRequest對象的readyState屬性
Ø ReadyState屬性
屬性名稱
|
描述
|
0 (未初始化)
|
對象已建立,但是尚未初始化(尚未調用open方法)
|
1 (初始化)
|
對象已建立,尚未調用send方法
|
2 (發送數據)
|
send方法已調用,但是當前的狀態及http頭未知
|
3 (數據傳送中)
|
已接收部分數據,因為響應及http頭不全,這時通過responseBody和responseText獲取部分數據會出現錯誤
|
4 (完成)
|
數據接收完畢,此時可以通過通過responseBody和responseText獲取完整的回應數據
|
XMLHttpRequest對象的onreadystatechange事件
Ø 每個狀態改變時都會觸發這個事件處理器,通常會調用一個JavaScript 函數。
Ø 語法
onreadystatechang 指定當readyState屬性改變時的事件處理句柄,只寫
xmlHttpObj.onreadystatechange=callback;
function callback (){
if(xmlHttpObj.readyState==4){
if(xmlHttpObj.stateus==200){
alert(xmlHttpObj.responseText);
}else{
alert("加載失敗!"n原因:"+xmlHttpObj.stateText);
}
}
}
|
XMLHttpRequest對象的responseText屬性
Ø 服務器的響應,表示為一個串。
Ø 客戶端接收到的HTTP響應的文本內容。
Ø 當readyState值為0、1或2時,responseText包含一個空字符串。
Ø 當readyState值為3(正在接收)時,響應中包含客戶端還未完成的響應信息。
Ø 當readyState為4(已加載)時,該responseText包含完整的響應信息。
XMLHttpRequest對象的responseXML屬性
Ø 服務器的響應,表示為XML。
Ø 用于當接收到完整的HTTP響應時(readyState為4)描述XML響應。
Ø Content-Type頭部指定MIME(媒體)類型為text/xml,application/xml或以+xml結尾。
Ø 如果Content-Type頭部并不包含這些媒體類型之一,那么responseXML的值為null。
Ø 無論何時,只要readyState值不為4,那么該responseXML的值也為null。
Ø responseXML可以返回一個文檔樹(DOM),可以使用document.getElementsByTagName,document.getElementsByTagNameNS,document.getElementById等對其操作。
XMLHttpRequest對象的status屬性
Ø 長整形標準http狀態碼。
Ø 僅當readyState值為3(正在接收中)或4(已加載)時,這個status屬性才可用。
Ø 當readyState的值小于3時試圖存取status的值將引發一個異常。
Ø 狀態碼如下定義:
值
|
描述
|
100
|
Continue
|
101
|
Switching protocols
|
200
|
OK
|
201
|
Created
|
202
|
Accepted
|
203
|
Non-Authoritative Information
|
204
|
No Content
|
205
|
Reset Content
|
206
|
Partial Content
|
300
|
Multiple Choices
|
301
|
Moved Permanently
|
302
|
Found
|
303
|
See Other
|
304
|
Not Modified
|
305
|
Use Proxy
|
307
|
Temporary Redirect
|
400
|
Bad Request
|
401
|
Unauthorized
|
402
|
Payment Required
|
403
|
Forbidden
|
404
|
Not Found
|
405
|
Method Not Allowed
|
406
|
Not Acceptable
|
407
|
Proxy Authentication Required
|
408
|
Request Timeout
|
409
|
Conflict
|
410
|
Gone
|
411
|
Length Required
|
412
|
Precondition Failed
|
413
|
Request Entity Too Large
|
414
|
Request-URI Too Long
|
415
|
Unsupported Media Type
|
416
|
Requested Range Not Suitable
|
417
|
Expectation Failed
|
500
|
Internal Server Error
|
501
|
Not Implemented
|
502
|
Bad Gateway
|
503
|
Service Unavailable
|
504
|
Gateway Timeout
|
505
|
HTTP Version Not Supported
|
XMLHttpRequest對象的statusText屬性
Ø 描述了HTTP狀態代碼文本。
Ø 僅當readyState值為3或4才可用。
Ø 當readyState為其它值時試圖存取statusText屬性將引發一個異常?!?/span>
Ø 返回當前請求的響應行狀態
XMLHttpRequest對象的abort()方法
Ø 暫停與一個XMLHttpRequest對象相聯系的HTTP請求。
Ø 從而把該對象復位到未初始化狀態。
Ø 用來中斷請求,取消當前請求。
XMLHttpRequest對象的open()方法
Ø void open(string method, string url, boolean asynch, string username, string password) 建立對服務器的連接,初始化一個XHR對象的純腳本方法。
1. ethod參數: 是必須提供的-指定發送請求的HTTP方法(GET,POST,PUT,DELETE或HEAD)。
2. uri參數: 用于指定請求發送到的服務器相應的URI。
3. async參數: 指定請求是否是異步的,預設是true,表示使用非同步方式。為了發送一個同步請求,需要把這個參數設置為false。
Ø 對于要求認證的服務器,提供可選的用戶名和口令參數。
Ø 在調用open()方法后,XMLHttpRequest對象把readyState屬性設置為1(打開)。
Ø 并且把responseText、responseXML、status和statusText屬性復位到它們的初始值。
XMLHttpRequest對象的send()方法
Ø 向服務器發送請求。
Ø 僅當readyState值為1時,才可以調用send()方法;否則的話,XHR對象將引發一個異常。
Ø 當async參數為true時,send()方法立即返回,從而允許其它客戶端腳本繼續處理。
Ø 在調用send()方法后,XHR對象把readyState的值設置為2(發送)。
Ø 當服務器響應時,在接收消息體之前,如果存在任何消息體的話,XHR對象將把readyState設置為3(正在接收中)。
Ø 當請求完成加載時,它把readyState設置為4(已加載)。
Ø 對于一個HEAD類型的請求,它將在把readyState值設置為3后再立即把它設置為4。
Ø send()方法使用一個可選的參數-該參數可以包含可變類型的數據。
Ø 通過POST方法把數據發送到服務器。
Ø 可以顯式地使用null參數調用send()方法,這與不用參數調用它一樣。
Ø 對于大多數其它的數據類型,在調用send()方法之前,應該使用setRequestHeader()方法先設置Content-Type頭部。
Ø 可選參數可以是DOM 對象的實例、輸入流,或者串。
Ø 傳入這個方法的內容會作為請求體的一部分發送。
XMLHttpRequest對象的setRequestHeader()方法
Ø setRequestHeader(DOMString header,DOMString value)方法用來設置請求的頭部信息。
Ø 當readyState值為1時,你可以在調用open()方法后調用這個方法。否則,你將得到一個異常。
Ø getResponseHeader(DOMString header,value)方法用于檢索響應的頭部值。
Ø 僅當readyState值是3或4(換句話說,在響應頭部可用以后)時,才可以調用這個方法。否則,該方法返回一個空字符串。
XMLHttpRequest對象的getAllResponseHeaders()方法
Ø 該getAllResponseHeaders()方法以一個字符串形式返回所有的響應頭部(每一個頭部占單獨的一行)。
Ø 如果readyState的值不是3或4,則該方法返回null。
作者:周大慶(zhoudaqing)
網址:http://www.tkk7.com/yifeng
>>>轉載請注明出處!<<<
posted on 2008-08-26 02:31
憶風 閱讀(290)
評論(0) 編輯 收藏 所屬分類:
Ajax