Ajax與Comet-JavaScript進階程式設計第21章讀書筆記(1)

來源:互聯網
上載者:User

標籤:open   服務   對象   keyword   stat   chap   部分   amp   參數   

Ajax(Asynchronous Javascript + XML)技術的核心是XMLHttpRequest對象,即: XHR。雖然名字中包含XML,但它所指的僅僅是這種無須重新整理頁面即可從伺服器端擷取資料的技術,其通訊與資料格式無關,並不一定是XML資料。

XMLHttpRequest對象

IE7+、Firefox、Opera、Chrome 和 Safari 都支援原生的XHR對象。我們可以直接使用XMLHttpRequest建構函式來建立XHR對象。

var xhr = new XMLHttpRequest();

雖然,IE7之前版本的瀏覽器中,建立xhr的方法與此有所不同,但是,前端技術發展到今天,已經很少有業務需求是要支援IE7之前的版本了。因此,這裡我略過這一情況。

XHR的用法

使用 XHR對象的時候,要調用的第一個方法是open(),它接受3個參數:

  1. 要發送請求的類型,如: get/post
  2. 請求的url
  3. 是否非同步發送請求,這個參數是一個布爾值

xhr.open(‘get‘, ‘example.php‘, false)

注意:open()方法的調用並不會真正發送請求,僅僅是啟動一個請求以備發送!

另外,只能向同一個域中使用相同連接埠和協議的URL發送請求,否則,會出現錯誤。

在執行open()方法之後,必須再調用send()方法,才會真正發起ajax請求。

xhr.open(‘get‘, ‘example.txt‘, false);xhr.send(null);

send()方法接收一個參數,即:要作為請求主體發送的資料。如果不需要發送資料,那麼必須傳入null,因為該參數對於部分瀏覽器而言是必需的。

本例中的請求是同步的,Javascript代碼會等到伺服器響應之後再執行。
收到響應後,響應的資料會自動填滿XHR對象的屬性,相關的屬性有:

  1. responseText: 作為響應主體被返回的文本。
  2. responseXML: 如果響應的內容類型是"text/xml"或者"application/xml",那麼這個屬性中將儲存著包含響應資料的XML DOM文檔。
  3. status: 響應的HTTP狀態
  4. statusText: HTTP狀態的說明

無論內容類型是什麼,響應主體的內容都會儲存到responseText屬性中,而對於非XML資料而言,responseXML 屬性的值將會是null

收到響應後,一般來說,會先判斷 status 是否為200,這是此次請求成功的標誌。此時,responseText屬性的內容已經就緒,而且在內容類型正確的情況下,responseXML也能夠訪問了。
另外,狀態代碼status如果是304,那麼表示請求的資源沒有被修改,可以直接使用瀏覽器中的緩衝,當然,這樣的響應也是有效。

if( (xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 ){    alert(xhr.responseText);}else{    alert(‘fail! status:‘ + xhr.status);}

有的瀏覽器會錯誤地報告 204 的狀態碼。IE中 XHR 的ActiveX版本會將204設定為1223,而IE中原生的 XHR 則會將 204 正常化為 200。Opera會在取得204時報告 status的值為0。

原文連結:http://www.4455q.com/ajax-comet-javascript-chapter21-note1.html

Ajax與Comet-JavaScript進階程式設計第21章讀書筆記(1)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.