AJAX入門之XMLHttpRequest慨述
更新時(shí)間:2006年06月25日 00:00:00 作者:
在使用XMLHttpRequest對象發(fā)送請求和處理響應(yīng)之前,必須先用JavaScript創(chuàng)建一個(gè)XMLHttpRequest對象。由于XMLHttpRequest不是一個(gè)W3C標(biāo)準(zhǔn),所以可以采用多種方法使用JavaScript來創(chuàng)建XMLHttpRequest的實(shí)例。Internet Explorer把XMLHttpRequest實(shí)現(xiàn)為一個(gè)ActiveX對象,其他瀏覽器(如Firefox、Safari和Opera)把它實(shí)現(xiàn)為一個(gè)本地JavaScript對象。由于存在這些差別,JavaScript代碼中必須包含有關(guān)的邏輯,從而使用ActiveX技術(shù)或者使用本地JavaScript對象技術(shù)來創(chuàng)建XMLHttpRequest的一個(gè)實(shí)例。
很多人可能還記得從前的那段日子,那時(shí)不同瀏覽器上的JavaScript和DOM實(shí)現(xiàn)簡直千差萬別,聽了上面這段話之后,這些人可能又會不寒而栗。幸運(yùn)的是,在這里為了明確該如何創(chuàng)建XMLHttpRequest對象的實(shí)例,并不需要那么詳細(xì)地編寫代碼來區(qū)別瀏覽器類型。你要做的只是檢查瀏覽器是否提供對ActiveX對象的支持。如果瀏覽器支持ActiveX對象,就可以使用ActiveX來創(chuàng)建XMLHttpRequest對象。否則,就要使用本地JavaScript對象技術(shù)來創(chuàng)建。代碼清單2-1展示了編寫跨瀏覽器的JavaScript代碼來創(chuàng)建XMLHttpRequest對象實(shí)例是多么簡單。
代碼清單2-1 創(chuàng)建XMLHttpRequest對象的一個(gè)實(shí)例
可以看到,創(chuàng)建XMLHttpRequest對象相當(dāng)容易。首先,要?jiǎng)?chuàng)建一個(gè)全局作用域變量xmlHttp來保存這個(gè)對象的引用。createXMLHttpRequest方法完成創(chuàng)建XMLHttpRequest實(shí)例的具體工作。這個(gè)方法中只有簡單的分支邏輯(選擇邏輯)來確定如何創(chuàng)建對象。對window.ActiveXObject的調(diào)用會返回一個(gè)對象,也可能返回null,if語句會把調(diào)用返回的結(jié)果看作是true或false(如果返回對象則為true,返回null則為false),以此指示瀏覽器是否支持ActiveX控件,相應(yīng)地得知瀏覽器是不是Internet Explorer。如果確實(shí)是,則通過實(shí)例化ActiveXObject的一個(gè)新實(shí)例來創(chuàng)建XMLHttpRequest對象,并傳入一個(gè)串指示要?jiǎng)?chuàng)建何種類型的ActiveX對象。在這個(gè)例子中,為構(gòu)造函數(shù)提供的字符串是Microsoft.XMLHTTP,這說明你想創(chuàng)建XMLHttpRequest的一個(gè)實(shí)例。
如果window.ActiveXObject調(diào)用失?。ǚ祷豱ull),JavaScript就會轉(zhuǎn)到else語句分支,確定瀏覽器是否把XMLHttpRequest實(shí)現(xiàn)為一個(gè)本地JavaScript對象。如果存在window.
XMLHttpRequest,就會創(chuàng)建XMLHttpRequest的一個(gè)實(shí)例。
由于JavaScript具有動(dòng)態(tài)類型特性,而且XMLHttpRequest在不同瀏覽器上的實(shí)現(xiàn)是兼容的,所以可以用同樣的方式訪問XMLHttpRequest實(shí)例的屬性和方法,而不論這個(gè)實(shí)例創(chuàng)建的方法是什么。這就大大簡化了開發(fā)過程,而且在JavaScript中也不必編寫特定于瀏覽器的邏輯。
很多人可能還記得從前的那段日子,那時(shí)不同瀏覽器上的JavaScript和DOM實(shí)現(xiàn)簡直千差萬別,聽了上面這段話之后,這些人可能又會不寒而栗。幸運(yùn)的是,在這里為了明確該如何創(chuàng)建XMLHttpRequest對象的實(shí)例,并不需要那么詳細(xì)地編寫代碼來區(qū)別瀏覽器類型。你要做的只是檢查瀏覽器是否提供對ActiveX對象的支持。如果瀏覽器支持ActiveX對象,就可以使用ActiveX來創(chuàng)建XMLHttpRequest對象。否則,就要使用本地JavaScript對象技術(shù)來創(chuàng)建。代碼清單2-1展示了編寫跨瀏覽器的JavaScript代碼來創(chuàng)建XMLHttpRequest對象實(shí)例是多么簡單。
代碼清單2-1 創(chuàng)建XMLHttpRequest對象的一個(gè)實(shí)例
| var xmlHttp; function createXMLHttpRequest() { if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } } |
可以看到,創(chuàng)建XMLHttpRequest對象相當(dāng)容易。首先,要?jiǎng)?chuàng)建一個(gè)全局作用域變量xmlHttp來保存這個(gè)對象的引用。createXMLHttpRequest方法完成創(chuàng)建XMLHttpRequest實(shí)例的具體工作。這個(gè)方法中只有簡單的分支邏輯(選擇邏輯)來確定如何創(chuàng)建對象。對window.ActiveXObject的調(diào)用會返回一個(gè)對象,也可能返回null,if語句會把調(diào)用返回的結(jié)果看作是true或false(如果返回對象則為true,返回null則為false),以此指示瀏覽器是否支持ActiveX控件,相應(yīng)地得知瀏覽器是不是Internet Explorer。如果確實(shí)是,則通過實(shí)例化ActiveXObject的一個(gè)新實(shí)例來創(chuàng)建XMLHttpRequest對象,并傳入一個(gè)串指示要?jiǎng)?chuàng)建何種類型的ActiveX對象。在這個(gè)例子中,為構(gòu)造函數(shù)提供的字符串是Microsoft.XMLHTTP,這說明你想創(chuàng)建XMLHttpRequest的一個(gè)實(shí)例。
如果window.ActiveXObject調(diào)用失?。ǚ祷豱ull),JavaScript就會轉(zhuǎn)到else語句分支,確定瀏覽器是否把XMLHttpRequest實(shí)現(xiàn)為一個(gè)本地JavaScript對象。如果存在window.
XMLHttpRequest,就會創(chuàng)建XMLHttpRequest的一個(gè)實(shí)例。
由于JavaScript具有動(dòng)態(tài)類型特性,而且XMLHttpRequest在不同瀏覽器上的實(shí)現(xiàn)是兼容的,所以可以用同樣的方式訪問XMLHttpRequest實(shí)例的屬性和方法,而不論這個(gè)實(shí)例創(chuàng)建的方法是什么。這就大大簡化了開發(fā)過程,而且在JavaScript中也不必編寫特定于瀏覽器的邏輯。
您可能感興趣的文章:
- Ajax xmlHttpRequest的status的值的含義
- AJAX中同時(shí)發(fā)送多個(gè)請求XMLHttpRequest對象處理方法
- 解析ajax核心XMLHTTPRequest對象的創(chuàng)建與瀏覽器的兼容問題
- 如何用ajax來創(chuàng)建一個(gè)XMLHttpRequest對象
- Ajax通訊原理XMLHttpRequest
- ajax 入門基礎(chǔ)之 XMLHttpRequest對象總結(jié)
- Ajax核心XMLHttpRequest總結(jié)
- AJAX(XMLHttpRequest.status)狀態(tài)碼
- XMLHttpRequest對象_Ajax異步請求重點(diǎn)(推薦)
- AJAX XMLHttpRequest對象詳解
- 不使用XMLHttpRequest對象實(shí)現(xiàn)Ajax效果的方法小結(jié)
相關(guān)文章
基于Jquery.history解決ajax的前進(jìn)后退問題
本文主要給大家介紹基于Jquery.history解決ajax的前進(jìn)后退問題,涉及到j(luò)query前進(jìn)后退相關(guān)方面的知識,本文內(nèi)容經(jīng)典,非常具有參考價(jià)值,特此把jquery前進(jìn)后退相關(guān)知識分享在腳本之家網(wǎng)站供大家參考2015-10-10

