琪鈺人生

          沒有最好,只有更好.

           

          深入理解AJAX響應信息的處理

          請求狀態   該AJAX對象的請求狀態與被請求文件的HTTP狀態是一樣的。包含在AJAX文件中的HTTP對象處理了所有的W3C描述的HTTP狀態代碼定義,并把它們返回給請求方法。狀態代碼被分成了五個部分:   · 信息的 1xx   · 成功的 2xx   · 重定向 3xx   · 客戶端錯誤 4xx   · 服務器錯誤 5xx   上面的數字中的最前面一位表示某種類別的狀態代碼。例如,成功的是2xx,它的意思是包含了200-299之間的所有狀態代碼。HTTP對象檢查狀態代碼的第一位數字,并根據代碼所屬的類別,執行一次轉換。在檢測出類別之后,HTTP對象把它發送給響應方法,該方法把狀態代碼作為字符串的形式返回。這就是HTTP狀態方法: this.status = function(_status) {  var s = _status.toString().split("");  switch(s[0])  {   case "1":    return this.getInformationalStatus(_status);    break;   case "2":    return this.getSuccessfulStatus(_status);    break;   case "3":    return this.getRedirectionStatus(_status);    break;   case "4":    return this.getClientErrorStatus(_status);    break;   case "5":    return this.getServerErrorStatus(_status);    break;  } }   狀態代碼是通過檢測該代碼的第一位數字來處理的。一旦完成了代碼檢測,原始的狀態代碼就被發送到一個適當的方法中,該方法給onResponse方法發送一個字符串形式的狀態代碼。接著我們就可以把這條消息顯示給用戶,如果遇到了什么錯誤,她/他就知道發生了什么情況。另一方面,如果請求是成功的,那么就顯示數據。   ResponseText和ResponseXML   響應信息的內容可能有多種不同的形式,例如XML、純文本、(X)HTML或JavaScript對象符號(JSON)。我們可以根據所接收到的數據格式的不同,用兩種不同的方法來處理:使用responseText或者responseXML。responseText方法用于那些并非基于XML的格式。它把響應信息作為字符串,返回精確的內容。純文本、(X)HTML和JSON都使用responseText。在純文本或HTML上使用這個方法是很簡單的: if(ajax.checkReadyState('body', 'loading...', 'loading...', 'loading...') == "OK") {  document.getElementById('body').innerHTML = ajax.request.responseText; }   它最簡單不過了!一旦載入響應信息完成,我們就調用AJAX對象,用responseText來檢索它的值,并把它添加到頁面上。   處理JSON響應信息比處理純文本或(X)HTML需要多一點技巧。下面是我們分析一個JSON文件的示例: { 'header' : 'How to Handle the Ajax Response', 'description' : 'An in-depth explanation of how to handle the Ajax response.', 'sourceUrl' : 'http://www.krishadlock.com/clients/informit/AjaxResponse/AjaxResponse.zip'}   數據被冒號(:)分成了兩個部分:標簽名稱和值。附加的數據被逗號(,)分成新的名稱/值對?,F在我們知道了JSON的樣子了,下面是我們分析它的方法: if(ajax.checkReadyState('body', 'loading...', 'loading...', 'loading...') == "OK") {  eval("var response = ("+ajax.request.responseText+")");  document.getElementById('body').innerHTML = "" + response.header + "
          " + response.description + "

          " + "Download the source files"; }   JSON數據首先由JavaScript來分析(使用簡單的eval()過程)。一旦數據被分析好了并建立了響應信息對象,我們就可以簡單地通過名字來獲取它們的響應信息值。   responseText不僅可以給頁面添加內容,它在調試AJAX請求的時候也有用處。例如,你可能還沒有準備好分析數據,因為你還不知道所有的標簽是什么樣的,是XML格式的還是JSON文件。這就要求有一種用于檢測被分析數據的途徑。一旦你知道了所有的標簽名稱,所需要做的事情就只是編寫代碼了。   responseXML的使用也相當簡單。但是與JSON格式類似,XML要求進行數據分析。我們需要執行的第一項事務是識別出XML響應信息中的根節點。 var response = ajax.request.responseXML.documentElement;   下一步,我們通過名稱獲取所有的元素并得到它們的值: var header = response.getElementsByTagName('header')[0].firstChild.data; var description = response.getElementsByTagName('description')[0].firstChild.data; var sourceUrl = response.getElementsByTagName('sourceUrl')[0].firstChild.data;   最后,我們把響應信息顯示在相應的div標記中: document.getElementById('body').innerHTML = "" + header + "
          " + description + "

          " + "Download the source files";   用JavaScript的時候,JSON比XML要快一些,這是因為JSON所需要的分析代碼比XML少很多,直接導致在分析大量數據的時候,JSON的速度較快。JSON不如XML的地方在于XML受到的支持更大、服務器端開發選項更多。你可以根據環境和請求的用途來做出選擇。   AJAX響應信息是AJAX通訊中的一個重要的部分。你需要處理很多方面的信息,包括就緒狀態、錯誤處理和加載狀態,并最終顯示出來。有了這些信息之后,你就可以把注意力集中在響應信息上,為用戶提供更多的信息。

          posted on 2006-03-15 12:29 寶鈺 閱讀(84) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案(1)

          文章檔案(1)

          搜索

          積分與排名

          最新評論

          主站蜘蛛池模板: 泽普县| 石首市| 安义县| 石嘴山市| 绿春县| 临猗县| 象州县| 波密县| 宽甸| 密山市| 万州区| 奉化市| 黄大仙区| 宁南县| 武宁县| 富阳市| 女性| 夏津县| 威海市| 威宁| 来凤县| 广东省| 铜山县| 乌兰浩特市| 明光市| 沙洋县| 开封市| 双柏县| 遂平县| 清河县| 宣威市| 大英县| 青田县| 凯里市| 安仁县| 积石山| 柳林县| 云霄县| 邓州市| 安康市| 石嘴山市|