隨筆-84  評論-56  文章-0  trackbacks-0
           

          XMLHttpRequest(XHR)

          Ø 瀏覽器可以直接從JavaScript中初始化請求并獲取結果。

          Ø 本質上是添加了額外的用于發送和接收XML代碼功能的普通HTTP請求。

          Ø 像一個 ServletRequest

          XMLHttpRequest對象的屬性和事件

          Ø XMLHttpRequest對象的屬性

          屬性名稱

          描述

          onreadystatechange

          指定當readyState屬性改變時的事件處理句柄,只寫

          readyState

          返回當前請求的狀態,只讀。

          responseBody

          將回應信息正文以unsigned byte數組形式返回,只讀。

          responseStream

          Ado Stream對象的形式返回響應信息,只讀

          responseText

          將響應信息作為字符串返回,只讀

          responseXML

          將響應信息格式化為Xml Document對象并返回,只讀

          status

          返回當前請求的http狀態碼,只讀

          statusText

          返回當前請求的響應行狀態,只讀

          XMLHttpRequest對象的方法

          Ø 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頭不全,這時通過responseBodyresponseText獲取部分數據會出現錯誤

          4 (完成)

          數據接收完畢,此時可以通過通過responseBodyresponseText獲取完整的回應數據

          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值為012時,responseText包含一個空字符串。

          Ø readyState值為3(正在接收)時,響應中包含客戶端還未完成的響應信息。

          Ø readyState4(已加載)時,該responseText包含完整的響應信息。

          XMLHttpRequest對象的responseXML屬性

          Ø 服務器的響應,表示為XML

          Ø 用于當接收到完整的HTTP響應時(readyState4)描述XML響應。

          Ø Content-Type頭部指定MIME(媒體)類型為text/xmlapplication/xml或以+xml結尾。

          Ø 如果Content-Type頭部并不包含這些媒體類型之一,那么responseXML的值為null

          Ø 無論何時,只要readyState值不為4,那么該responseXML的值也為null

          Ø responseXML可以返回一個文檔樹(DOM),可以使用document.getElementsByTagNamedocument.getElementsByTagNameNSdocument.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值為34才可用。

          Ø readyState為其它值時試圖存取statusText屬性將引發一個異常。 

          Ø 返回當前請求的響應行狀態

          XMLHttpRequest對象的abort()方法

          Ø 暫停與一個XMLHttpRequest對象相聯系的HTTP請求。

          Ø 從而把該對象復位到未初始化狀態。

          Ø 用來中斷請求,取消當前請求。

          XMLHttpRequest對象的open()方法

          Ø void open(string method, string url, boolean asynch, string username, string password) 建立對服務器的連接,初始化一個XHR對象的純腳本方法。

          1.         ethod參數: 是必須提供的-指定發送請求的HTTP方法(GETPOSTPUTDELETEHEAD)

          2.         uri參數: 用于指定請求發送到的服務器相應的URI

          3.         async參數: 指定請求是否是異步的,預設是true,表示使用非同步方式。為了發送一個同步請求,需要把這個參數設置為false

          Ø 對于要求認證的服務器,提供可選的用戶名和口令參數。

          Ø 在調用open()方法后,XMLHttpRequest對象把readyState屬性設置為1(打開)

          Ø 并且把responseTextresponseXMLstatusstatusText屬性復位到它們的初始值。

          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 headerDOMString value)方法用來設置請求的頭部信息。

          Ø readyState值為1時,你可以在調用open()方法后調用這個方法。否則,你將得到一個異常。 

          Ø getResponseHeader(DOMString headervalue)方法用于檢索響應的頭部值。

          Ø 僅當readyState值是34(換句話說,在響應頭部可用以后)時,才可以調用這個方法。否則,該方法返回一個空字符串。

          XMLHttpRequest對象的getAllResponseHeaders()方法

          Ø getAllResponseHeaders()方法以一個字符串形式返回所有的響應頭部(每一個頭部占單獨的一行)。

          Ø 如果readyState的值不是34,則該方法返回null




          作者:周大慶(zhoudaqing)
          網址:http://www.aygfsteel.com/yifeng
          >>>轉載請注明出處!<<<

          posted on 2008-08-26 02:31 憶風 閱讀(294) 評論(0)  編輯  收藏 所屬分類: Ajax
          主站蜘蛛池模板: 姚安县| 迭部县| 保定市| 敦煌市| 长兴县| 泰和县| 大方县| 大冶市| 仪陇县| 余姚市| 永春县| 抚顺县| 贵南县| 偃师市| 宝坻区| 胶州市| 阜平县| 禄丰县| 兰西县| 建阳市| 类乌齐县| 溧阳市| 邓州市| 彭山县| 佛坪县| 鞍山市| 安远县| 防城港市| 墨竹工卡县| 抚顺市| 古交市| 红桥区| 广西| 塔城市| 沙雅县| 彭山县| 新昌县| 黑山县| 浪卡子县| 台山市| 长治县|