AJAX XMLHttpRequest對象詳解

來源:互聯網
上載者:User

XMLHttpRequest對象是當今所有AJAX和Web 2.0應用程式的技術基礎。儘管軟體經銷商和開源社團現在都在提供各種AJAX架構以進一步簡化XMLHttpRequest對象的使用;但是,我們仍然很有必要理解這個對象的詳細工作機制。

一、引言

非同步JavaScript與XML(AJAX)是一個專用術語,用於實現在用戶端指令碼與伺服器之間的資料互動過程。這一技術的優點在於,它向開發人員提供了一種從Web伺服器檢索資料而不必把使用者當前正在觀察的頁面回饋給伺服器。與現代瀏覽器的通過存取瀏覽器DOM結構的編程代碼(JavaScript)動態地改變被顯示內容的支援相配合,AJAX讓開發人員在瀏覽器端更新被顯示的HTML內容而不必重新整理頁面。換句話說,AJAX可以使基於瀏覽器的應用程式更具互動性而且更類似傳統型傳統型應用程式。

Google的Gmail和Outlook Express就是兩個使用AJAX技術的我們所熟悉的例子。而且,AJAX可以用於任何用戶端指令碼語言中,這包括JavaScript,Jscript和VBScript。

AJAX利用一個構建到所有現代瀏覽器內部的對象-XMLHttpRequest-來實現發送和接收HTTP請求與響應資訊。一個經由XMLHttpRequest對象發送的HTTP請求並不要求頁面中擁有或回寄一個<form>元素。AJAX中的"A"代表了"非同步",這意味著XMLHttpRequest對象的send()方法可以立即返回,從而讓Web頁面上的其它HTML/JavaScript繼續其瀏覽器端處理而由伺服器處理HTTP請求並發送響應。儘管預設情況下請求是非同步進行的,但是,你可以選擇發送同步請求,這將會暫停其它Web頁面的處理,直到該頁面接收到伺服器的響應為止。

微軟在其Internet Explorer(IE) 5中作為一個ActiveX對象形式引入了XMLHttpRequest對象。其他的認識到這一對象重要性的瀏覽器製造商也都紛紛在他們的瀏覽器內實現了XMLHttpRequest對象,但是作為一個本地JavaScript對象而不是作為一個ActiveX對象實現。而如今,在認識到實現這一類型的價值及安全性特徵之後,微軟已經在其IE 7中把XMLHttpRequest實現為一個視窗對象屬性。幸運的是,儘管其實現(因而也影響到調用方式)細節不同,但是,所有的瀏覽器實現都具有類似的功能,並且實質上是相同方法。目前,W3C組織正在努力進行XMLHttpRequest對象的標準化,並且已經發行了有關該W3C規範的一個草案。

本文將對XMLHttpRequest對象API進行詳細討論,並將解釋其所有的屬性和方法。

二、XMLHttpRequest對象的屬性和事件

XMLHttpRequest對象暴露各種屬性、方法和事件以便於指令碼處理和控制HTTP請求與響應。下面,我們將對此展開詳細的討論。

readyState屬性

當XMLHttpRequest對象把一個HTTP請求發送到伺服器時將經曆若干種狀態:一直等待直到請求被處理;然後,它才接收一個響應。這樣以來,指令碼才正確響應各種狀態-XMLHttpRequest對象暴露一個描述對象的目前狀態的readyState屬性,如表格1所示。

表格1.XMLHttpRequest對象的ReadyState屬性值列表。

ReadyState取值 描述
0 描述一種"未初始化"狀態;此時,已經建立一個XMLHttpRequest對象,但是還沒有初始化。
1 描述一種"發送"狀態;此時,代碼已經調用了XMLHttpRequest open()方法並且XMLHttpRequest已經準備好把一個請求發送到伺服器。
2 描述一種"發送"狀態;此時,已經通過send()方法把一個請求發送到伺服器端,但是還沒有收到一個響應。
3 描述一種"正在接收"狀態;此時,已經接收到HTTP回應標頭部資訊,但是訊息體部分還沒有完全接收結束。
4 描述一種"已載入"狀態;此時,響應已經被完全接收。
onreadystatechange事件

無論readyState值何時發生改變,XMLHttpRequest對象都會激發一個readystatechange事件。其中,onreadystatechange屬性接收一個EventListener值-向該方法指示無論readyState值何時發生改變,該對象都將啟用。

responseText屬性

這個responseText屬性包含用戶端接收到的HTTP響應的常值內容。當readyState值為0、1或2時,responseText包含一個Null 字元串。當readyState值為3(正在接收)時,響應中包含用戶端還未完成的響應資訊。當readyState為4(已載入)時,該responseText包含完整的響應資訊。

相關文章

聯繫我們

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