AJAX入門之XMLHttpRequest慨述

來源:互聯網
上載者:User

 在使用XMLHttpRequest對象發送請求和處理響應之前,必須先用JavaScript建立一個XMLHttpRequest對象。由於XMLHttpRequest不是一個W3C標準,所以可以採用多種方法使用JavaScript來建立XMLHttpRequest的執行個體。Internet Explorer把XMLHttpRequest實現為一個ActiveX對象,其他瀏覽器(如Firefox、Safari和Opera)把它實現為一個本地JavaScript對象。由於存在這些差別,JavaScript代碼中必須包含有關的邏輯,從而使用ActiveX技術或者使用本地JavaScript對象技術來建立XMLHttpRequest的一個執行個體。

很多人可能還記得從前的那段日子,那時不同瀏覽器上的JavaScript和DOM實現簡直千差萬別,聽了上面這段話之後,這些人可能又會不寒而慄。幸運的是,在這裡為了明確該如何建立XMLHttpRequest對象的執行個體,並不需要那麼詳細地編寫代碼來區別瀏覽器類型。你要做的只是檢查瀏覽器是否提供對ActiveX對象的支援。如果瀏覽器支援ActiveX對象,就可以使用ActiveX來建立XMLHttpRequest對象。否則,就要使用本地JavaScript對象技術來建立。代碼清單2-1展示了編寫跨瀏覽器的JavaScript代碼來建立XMLHttpRequest對象執行個體是多麼簡單。

代碼清單2-1 建立XMLHttpRequest對象的一個執行個體

var xmlHttp;
function createXMLHttpRequest() {
  if (window.ActiveXObject) {
   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  else if (window.XMLHttpRequest) {
   xmlHttp = new XMLHttpRequest();
  }
}

可以看到,建立XMLHttpRequest對象相當容易。首先,要建立一個全域範圍變數xmlHttp來儲存這個對象的引用。createXMLHttpRequest方法完成建立XMLHttpRequest執行個體的具體工作。這個方法中只有簡單的分支邏輯(選擇邏輯)來確定如何建立對象。對window.ActiveXObject的調用會返回一個對象,也可能返回null,if語句會把調用返回的結果看作是true或false(如果返回對象則為true,返回null則為false),以此指示瀏覽器是否支援ActiveX控制項,相應地得知瀏覽器是不是Internet Explorer。如果確實是,則通過執行個體化ActiveXObject的一個新執行個體來建立XMLHttpRequest對象,並傳入一個串指示要建立何種類型的ActiveX對象。在這個例子中,為建構函式提供的字串是Microsoft.XMLHTTP,這說明你想建立XMLHttpRequest的一個執行個體。

如果window.ActiveXObject調用失敗(返回null),JavaScript就會轉到else語句分支,確定瀏覽器是否把XMLHttpRequest實現為一個本地JavaScript對象。如果存在window.

XMLHttpRequest,就會建立XMLHttpRequest的一個執行個體。

由於JavaScript具有動態類型特性,而且XMLHttpRequest在不同瀏覽器上的實現是相容的,所以可以用同樣的方式訪問XMLHttpRequest執行個體的屬性和方法,而不論這個執行個體建立的方法是什麼。這就大大簡化了開發過程,而且在JavaScript中也不必編寫特定於瀏覽器的邏輯。

相關文章

聯繫我們

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