資源描述:
《全面剖析xmlhttprequest對象》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、一、引言異步JavaScript與XML(AJAX)是一個專用術(shù)語,用于實(shí)現(xiàn)在客戶端腳木與服務(wù)器之間的數(shù)據(jù)交互過程。這一技術(shù)的優(yōu)點(diǎn)在于,它向開發(fā)者提供了-?種從Web服務(wù)器檢索數(shù)據(jù)而不必把用戶當(dāng)前疋在觀察的頁而凹饋給服務(wù)器。與現(xiàn)代瀏覽器的通過存取瀏覽器DOM結(jié)構(gòu)的編程代碼(JavaScript)動態(tài)地改變被顯示內(nèi)容的支持相配合,AJAX讓開發(fā)者在瀏覽器端更新被顯示的HTML內(nèi)容而不必刷新頁面。換句話說,AJAX可以使基于瀏覽器的應(yīng)用程序更具交互性而且更類似傳統(tǒng)型桌面應(yīng)用程序。Google的Gmail和OutlookExpress就是
2、兩個使川AJAX技術(shù)的我們所熟悉的例子。而且,AJAX可以用于任何客戶端腳木語言屮,這包括JavaScript,Jscript和VBScriptoAJAX利用一個構(gòu)建到所有現(xiàn)代瀏覽器內(nèi)部的對象-XMLHttpRequest-來實(shí)現(xiàn)發(fā)送和接收HTTP請求與響應(yīng)信息。一個經(jīng)由XMLHttpRequest對彖發(fā)送的HTTP請求并不要求頁面屮擁有或回寄一個<form>元索cAJAX'p的”A“代表了”異步”,這意味著XMLHttpRequest對象的send()方法可以立即返回,從而訃Web頁而上的其它HTML/JavaScript繼續(xù)其瀏
3、覽器端處理而由服務(wù)器處理HTTP請求并發(fā)送響應(yīng)。盡管缺省情況下請求是異步進(jìn)行的,但是,你可以選擇發(fā)送同步請求,這將會暫停其它Web頁曲的處理,肓到該頁曲接收到服務(wù)器的響應(yīng)為止。微軟在其InternetExplorer(IE)5屮作為一個ActiveX對象形式引入了XMLHttpRequest對象。其他的認(rèn)識到這一對象重要性的瀏覽器制造商也都紛紛在他們的瀏覽器內(nèi)實(shí)現(xiàn)了XMLHttpRequest對彖,但是作為一個本地JavaScript對象而不是作為一個ActiveX對象實(shí)現(xiàn)。而如今,在認(rèn)識到實(shí)現(xiàn)這一類型的價值及安全性特征之后,微軟已
4、經(jīng)在其IE7中把XMLHttpRequest實(shí)現(xiàn)為一個窗口對彖屬性。幸運(yùn)的是,盡管其實(shí)現(xiàn)(因而也影響到調(diào)用方式)細(xì)節(jié)不同,但是,所有的瀏覽器實(shí)現(xiàn)都具有類似的功能,并且實(shí)質(zhì)上是相同方法。目前,W3C組織正在努力進(jìn)行XMLHttpRequest對象的標(biāo)準(zhǔn)化,并且已經(jīng)發(fā)行了有關(guān)該W3C規(guī)范的一個草案。本文將對XMLHttpRequest對象API進(jìn)行詳細(xì)討論,并將解釋其所有的屬性和方法。二、XMLHttpRequest對象的屬性和事件XMLHttpRequest対象眾露各種屬性、方法和事件以便于腳本處理和控制HTTP請求與響應(yīng)。卜-面,我
5、們將對此展開詳細(xì)的討論。readyState屬性當(dāng)XMLHttpRequest對象把一個HTTP請求發(fā)送到服務(wù)器時將經(jīng)歷若干種狀態(tài):一玄等待直到請求被處理;然后,它才接收一個響應(yīng)。這樣以來,腳本才正確響應(yīng)各種狀態(tài)-XMLHttpRequest對彖暴露一個描述對彖的當(dāng)而狀態(tài)的readyState屬性,如表格1所示。表格1.XMLHttpRequest對象的ReadyState屬性值列表。ReadyState取值描述0描述一種”未初始化”狀態(tài);此時,已經(jīng)創(chuàng)建一個XMLHttpRequest對彖,但是還沒有初始化。1描述一種”發(fā)送'狀態(tài);
6、此時,代碼□經(jīng)調(diào)川了XMLHttpRequestopen()方法并一幾XMLHttpRequest已經(jīng)準(zhǔn)備好把一個請求發(fā)送到服務(wù)器。2描述一種”發(fā)送”狀態(tài);此時,已經(jīng)通過send()方法把-?個請求發(fā)送到服務(wù)器端,但是還沒冇收到一個響應(yīng)。3描述一種”正在接收“狀態(tài);此時,已經(jīng)接收到HTTP響應(yīng)頭部信息,但是消息體部分還沒有完全接收結(jié)束。4描述一種”已加載“狀態(tài);此時,響應(yīng)已經(jīng)被完全接收。onreadystatechange事件無論readyState值何時發(fā)生改變,XMLHttpRequest對彖都會激發(fā)一個readystatech
7、ange事件。其中,onreadystatechange屬性接收一個EventListenerffi-向該方法指示無論readyState何吋發(fā)生改變,該對象都將激活。responseText屬性這個responseText屬性包含客戶端接收到的HTTP響應(yīng)的文本內(nèi)容。當(dāng)readyState值為0、1或2時,responseText包含一個空字符串。當(dāng)readyState值為3(正在接收)時,響應(yīng)中包含客八端還未完成的響應(yīng)信息。當(dāng)readyState為4(已加載)時,該responseText包含完整的響應(yīng)信息。responseXM
8、L屬性此responseXML屬性用于當(dāng)接收到完整的HTTP響應(yīng)時(readyState為4)描述XML響應(yīng);此吋,Content-Type頭部指定MIME(媒體)類型為text/xml,application/xml或以+xml結(jié)尾