Web 2.0中AJAX技術應用詳解

來源:互聯網
上載者:User
ajax|web|詳解
  今年互連網上比較火熱的話題當然是關於WEB2.0的應用,其中AJAX又是WEB2.0的核心之一。AJAX是Asynchronous JavaScript and XML 的縮寫。
它並不是一門新的語言或技術,它實際上是幾項技術按一定的方式組合在一在同共的協作中發揮各自的作用,它包括:使用XHTML和CSS標準化呈現;使用DOM實現動態顯示和互動;使用XML和XSLT進行資料交換與處理;使用XMLHttpRequest進行非同步資料讀取;最後用JavaScript綁定和處理所有資料。

  Ajax的工作原理相當於在使用者和伺服器之間加了—個中介層,使使用者操作與伺服器響應非同步化。這樣把以前的一些伺服器負擔的工作轉嫁到用戶端,利於用戶端閑置的處理能力來處理,減輕伺服器和頻寬的負擔,從而達到節約ISP的空間及頻寬租用成本的目的。

  我們以兩個驗證通行證帳號是否存在的例子來講述AJAX在實際中的應用:

  (1)用文本字串的方式返回伺服器的響應來驗證網易通行證帳號是否存在;

  (2)以XMLDocument對象方式返迴響應來驗證金山通行證帳號是否存在;

  首先,我們需要用JavaScript來建立XMLHttpRequest 類向伺服器發送一個HTTP請求, XMLHttpRequest 類首先由Internet Explorer以ActiveX對象引入,被稱為XMLHTTP。 後來Mozilla﹑Netscape﹑Safari 和其他瀏覽器也提供了XMLHttpRequest類,不過它們建立XMLHttpRequest類的方法不同。

  對於Internet Explorer瀏覽器,建立XMLHttpRequest 方法如下:

xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP.3.0"); //3.0或4.0, 5.0
xmlhttp_request = new ActiveXObject("Msxml2.XMLHTTP");
xmlhttp_request = new ActiveXObject("Microsoft.XMLHTTP");

  由於在不同Internet Explorer瀏覽器中XMLHTTP版本可能不一致,為了更好的相容不同版本的Internet Explorer瀏覽器,因此我們需要根據不同版本的Internet Explorer瀏覽器來建立XMLHttpRequest類,上面代碼就是根據不同的Internet Explorer瀏覽器建立XMLHttpRequest類的方法。

  對於Mozilla﹑Netscape﹑Safari等瀏覽器,建立XMLHttpRequest 方法如下:

xmlhttp_request = new XMLHttpRequest();

  如果伺服器的響應沒有XML mime-type header,某些Mozilla瀏覽器可能無法正常工作。 為瞭解決這個問題,如果伺服器響應的header不是text/xml,可以調用其它方法修改該header。

xmlhttp_request = new XMLHttpRequest();
xmlhttp_request.overrideMimeType('text/xml');

  在實際應用中,為了相容多種不同版本的瀏覽器,一般將建立XMLHttpRequest類的方法寫成如下形式:

try{
 if( window.ActiveXObject ){
  for( var i = 5; i; i-- ){
   try{
    if( i == 2 ){
     xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" );
    }else{
     xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" );
    }
   xmlhttp_request.setRequestHeader("Content-Type","text/xml");
   xmlhttp_request.setRequestHeader("Content-Type","gb2312");
   break;
  }
  catch(e){
   xmlhttp_request = false;
  }
 }
}else if( window.XMLHttpRequest ){
 xmlhttp_request = new XMLHttpRequest();
 if (xmlhttp_request.overrideMimeType) {
  xmlhttp_request.overrideMimeType('text/xml');
 }
}
}catch(e){ xmlhttp_request = false; }

  在定義了如何處理響應後,就要發送請求了。可以調用HTTP請求類的open()和send()方法,如下所示:

xmlhttp_request.open('GET', URL, true); xmlhttp_request.send(null);

  open()的第一個參數是HTTP請求方式—GET,POST或任何伺服器所支援的您想調用的方式。 按照HTTP規範,該參數要大寫;否則,某些瀏覽器(如Firefox)可能無法處理請求。

  第二個參數是請求頁面的URL。

  第三個參數佈建要求是否為非同步模式。如果是TRUE,JavaScript函數將繼續執行,而不等待伺服器響應。這就是"AJAX"中的"A"。

[1] [2] [3]  下一頁



相關文章

聯繫我們

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