Ajax全稱:(Asynchronous JavaScript + XML)
基於web標準(standards-based presentation)XHTML+CSS的表示;
主要包含了以下幾種技術:
使用 DOM(Document Object Model)進行動態顯示及互動;
使用 XML 和 XSLT 進行資料交換及相關操作;
使用 XMLHttpRequest 進行非同步資料查詢、檢索;
使用 JavaScript 將所有的東西綁定在一起。
類似於DHTML或LAMP,AJAX不是指一種單一的技術,而是有機地利用了一系列相關的技術。
AJAX的應用使用支援以上技術的web瀏覽器作為運行平台。這些瀏覽器目前包括:Mozilla、Firefox、Internet Explorer、Opera、Konqueror及Safari。但是Opera不支援XSL格式對象,也不支援XSLT。
基礎應用:
建立XMLHttpRequest 方法如下:
XMLHttpRequest 類首先由Internet Explorer以ActiveX對象引入,被稱為XMLHTTP。 後來Mozilla﹑Netscape﹑Safari 和其他瀏覽器也提供了XMLHttpRequest類,不過它們建立XMLHttpRequest類的方法不同。
對於Internet Explorer瀏覽器:
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("Charset","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) 以XMLDocument對象方式返迴響應