<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA & XML & JAVASCRIPT & AJAX & CSS

    Web 2.0 技術儲備............

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      77 隨筆 :: 17 文章 :: 116 評論 :: 0 Trackbacks
    請求狀態(tài)

      該AJAX對象的請求狀態(tài)與被請求文件的HTTP狀態(tài)是一樣的。包含在AJAX文件中的HTTP對象處理了所有的W3C描述的HTTP狀態(tài)代碼定義,并把它們返回給請求方法。狀態(tài)代碼被分成了五個部分:

      · 信息的 1xx

      · 成功的 2xx

      · 重定向 3xx

      · 客戶端錯誤 4xx

      · 服務器錯誤 5xx

      上面的數(shù)字中的最前面一位表示某種類別的狀態(tài)代碼。例如,成功的是2xx,它的意思是包含了200-299之間的所有狀態(tài)代碼。HTTP對象檢查狀態(tài)代碼的第一位數(shù)字,并根據(jù)代碼所屬的類別,執(zhí)行一次轉(zhuǎn)換。在檢測出類別之后,HTTP對象把它發(fā)送給響應方法,該方法把狀態(tài)代碼作為字符串的形式返回。這就是HTTP狀態(tài)方法:

    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;
     }
    }

      狀態(tài)代碼是通過檢測該代碼的第一位數(shù)字來處理的。一旦完成了代碼檢測,原始的狀態(tài)代碼就被發(fā)送到一個適當?shù)姆椒ㄖ校摲椒ńoonResponse方法發(fā)送一個字符串形式的狀態(tài)代碼。接著我們就可以把這條消息顯示給用戶,如果遇到了什么錯誤,她/他就知道發(fā)生了什么情況。另一方面,如果請求是成功的,那么就顯示數(shù)據(jù)。

      ResponseText和ResponseXML

      響應信息的內(nèi)容可能有多種不同的形式,例如XML、純文本、(X)HTML或JavaScript對象符號(JSON)。我們可以根據(jù)所接收到的數(shù)據(jù)格式的不同,用兩種不同的方法來處理:使用responseText或者responseXML。responseText方法用于那些并非基于XML的格式。它把響應信息作為字符串,返回精確的內(nèi)容。純文本、(X)HTML和JSON都使用responseText。在純文本或HTML上使用這個方法是很簡單的:

    if(ajax.checkReadyState('body', 'loading...', 'loading...', 'loading...') == "OK")
    {
     document.getElementById('body').innerHTML = ajax.request.responseText;
    }

      它最簡單不過了!一旦載入響應信息完成,我們就調(diào)用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'}

      數(shù)據(jù)被冒號(:)分成了兩個部分:標簽名稱和值。附加的數(shù)據(jù)被逗號(,)分成新的名稱/值對。現(xiàn)在我們知道了JSON的樣子了,下面是我們分析它的方法:

    if(ajax.checkReadyState('body', 'loading...', 'loading...', 'loading...') == "OK")
    {
     eval("var response = ("+ajax.request.responseText+")");
     document.getElementById('body').innerHTML = "<b>" + response.header + "</b><br/>"
    + response.description + "<br/><br/>"
    + "<a href='" + response.sourceUrl + "'>Download the source files</a>";
    }

      JSON數(shù)據(jù)首先由JavaScript來分析(使用簡單的eval()過程)。一旦數(shù)據(jù)被分析好了并建立了響應信息對象,我們就可以簡單地通過名字來獲取它們的響應信息值。

      responseText不僅可以給頁面添加內(nèi)容,它在調(diào)試AJAX請求的時候也有用處。例如,你可能還沒有準備好分析數(shù)據(jù),因為你還不知道所有的標簽是什么樣的,是XML格式的還是JSON文件。這就要求有一種用于檢測被分析數(shù)據(jù)的途徑。一旦你知道了所有的標簽名稱,所需要做的事情就只是編寫代碼了。

      responseXML的使用也相當簡單。但是與JSON格式類似,XML要求進行數(shù)據(jù)分析。我們需要執(zhí)行的第一項事務是識別出XML響應信息中的根節(jié)點。

    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 = "<b>" + header + "</b><br/>"
    + description + "<br/><br/>"
    + "<a href='" + sourceUrl + "'>Download the source files</a>";

      用JavaScript的時候,JSON比XML要快一些,這是因為JSON所需要的分析代碼比XML少很多,直接導致在分析大量數(shù)據(jù)的時候,JSON的速度較快。JSON不如XML的地方在于XML受到的支持更大、服務器端開發(fā)選項更多。你可以根據(jù)環(huán)境和請求的用途來做出選擇。

      AJAX響應信息是AJAX通訊中的一個重要的部分。你需要處理很多方面的信息,包括就緒狀態(tài)、錯誤處理和加載狀態(tài),并最終顯示出來。有了這些信息之后,你就可以把注意力集中在響應信息上,為用戶提供更多的信息。

    轉(zhuǎn)自 : http://dev.yesky.com/355/2328855_1.shtml
    posted on 2006-03-16 16:07 Web 2.0 技術資源 閱讀(480) 評論(0)  編輯  收藏 所屬分類: AJAX
    主站蜘蛛池模板: 亚洲毛片在线观看| 亚洲国产精品久久久久秋霞小| 亚洲人成人77777网站不卡| 色吊丝性永久免费看码 | 亚洲成AV人片高潮喷水| 全亚洲最新黄色特级网站 | 免费在线观看一区| 亚洲国产香蕉碰碰人人| 免费鲁丝片一级观看| 国产成人精品亚洲2020| 国产av无码专区亚洲av果冻传媒| 一级看片免费视频| 亚洲最大黄色网址| 久久综合亚洲色HEZYO国产| 国产精品视频免费| 亚洲人成网站18禁止| 久久青青草原亚洲AV无码麻豆| a级毛片毛片免费观看久潮喷| 亚洲啪啪AV无码片| 全免费一级午夜毛片| 中文字幕乱码一区二区免费| 亚洲日本VA午夜在线影院| 国产成人A人亚洲精品无码| 国产精品无码免费视频二三区 | 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 亚洲视频免费一区| 国产色爽免费视频| 免费无码中文字幕A级毛片| 丰满亚洲大尺度无码无码专线| 国产一级淫片a视频免费观看| 国产亚洲蜜芽精品久久| 亚洲综合色成在线播放| 24小时免费直播在线观看| 午夜免费啪视频在线观看| 一级做a爱过程免费视| 香蕉大伊亚洲人在线观看| 亚洲第一区香蕉_国产a| 久久精品国产亚洲精品| 97国免费在线视频| 美女扒开尿口给男人爽免费视频 | 97国免费在线视频|