[ajax 學習筆記] ajax 的伺服器響應

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   io   資料   2014   

在上一篇[ajax 學習筆記] ajax初試中,簡單瞭解了一下ajax。

我是參考AJAX詳解.chm學習的,資源已上傳。參考連結:Ajax 專題

今天又學習了ajax中關於伺服器響應的一些知識。

ajax中伺服器的響應是通過響應函數將伺服器返回的資料呈現到頁面的。伺服器的響應體現在伺服器響應回呼函數中。

在上一篇的例子中,響應函數為:

function updatePage(){if(xmlHttp.readyState == 4){   //http就緒狀態if(xmlHttp.status == 200){    //判斷http狀態碼var response = xmlHttp.responseText;    document.getElementById("ajax-result").value = response;}else if(xmlHttp.status == 404){alert("Request url does not exist!");}else{alert("ERROR:status code is" + xmlHttp.status);}}}

關於這個響應函數要說明以下幾點:

1.xmlHttp.readyState

        這個例子中xmlHttp是XMLHttpRequest對象的一個執行個體。該對象有一個readyState屬性,表示就緒狀態。

        就緒狀態有五種,分別為:

               > 0:請求未初始化(還沒有調用open())

              > 1:請求已經建立,但是還沒有發送(還沒有調用send())

              > 2:請求已發送,正在處理中(通常現在可以從響應中擷取內容標題)

              > 3:請求正在處理中;通常響應中已有部分資料可用了,但是伺服器還沒有完成相應的產生

              > 4:響應已完成;表示可以擷取並使用伺服器的響應了

        由這幾種狀態可以知道,當XMLHttpRequest對象的readyState對象為4時,表示伺服器已經完成了對請求的響應,使用者才可以對伺服器響應的資料進行操作,於是回呼函數中會出現判斷xmlHttp為4的代碼。

試一試:如果你在回應函數中這麼寫:

function updatePage(){alert("readyState=" + xmlHttp.readyState);}
你會發現瀏覽器會彈出2~4次警告,告訴你當前的就緒狀態。這是因為每次繼續狀態改變的時候都會調用該回呼函數。

2.xmlHttp.status

        XMLHttpRequest有一個status屬性用來表示HTTP的狀態代碼。(您訪問網頁的時候一定遇到過"404 not found"字樣的情況吧,這裡的狀態代碼就是404這樣的數字,用來表示伺服器HTTP響應狀態,404呢表示請求失敗,200表示請求成功,如果查看狀態代碼,你可以用web開發人員工具看一下Network一欄)

        有興趣的可以多瞭解一下HTTP狀態代碼的資訊。

        在回呼函數中對HTTP狀態代碼詳加判斷能夠增加程式的健壯性,同時使能夠協助使用者加速找到程式發生的問題。

3.ajax和XML

        在上面回呼函數例子中用到了XMLHttpRequest的responseText屬性,它表示伺服器響應返回的文本資訊。

        這裡可能有一個認識的誤區:從名字上看,XMLHttpRequest的資料傳送應該是XML格式的。其實不然。ajax的資料傳送可以是文本的(像上面例子中用get方式進行名/值傳送),也可以傳送XML文檔(用到XMLHttpRequest的responsXML屬性)。

        就web應用程式用戶端而言,用文本傳送和XML傳送資料內容都是相同的,在內容相同的基礎上,XML要比普通文本浪費了空間,在傳送時浪費了時間,所以對於用戶端來說,大多數情況下,用普通文本傳送資料更好。

        為什麼說使用XML增加了處理時間?

                用XML傳送資料時:將文本封裝成 XML;發送額外資訊(要注意我沒有包含任何包圍元素、XML 頭或者可能出現在實際請求中的其他任何內容);讓伺服器解析 XML、產生響應、用 XML 封裝響應,並將它發送回網頁;讓網頁解析響應,最後使用它。

        但是有些情況下還是要用XML的。比如用get方式傳送名/值對時,假如資料量很大,get傳送方式有一定的長度限制,這是可以考慮用XML來傳送。

        就web應用程式伺服器端而言,向伺服器端發送XML情況大致分為兩類:

                1> 伺服器僅接受XML請求

                2> 您正在調用一個僅接受XML或SOAP請求的遠程API。(可以看成是上一種情況的特例)

        如果要發送XML資料,需要兩個步驟來保證XML的資料能夠被正確接收:

                1> 保證向其發送 XML 的指令碼能夠接受 XML 資料格式。

                2> 保證指令碼認可發送資料所採用的特定XML格式和結構。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.