AJAX JavaScript
這是儲存在檔案 "selectcustomer_xml.js" 中的 JavaScript 代碼:
var xmlHttpfunction showCustomer(str){ xmlHttp=GetXmlHttpObject();if (xmlHttp==null) { alert ("Your browser does not support AJAX!"); return; }var url="getcustomer_xml.asp";url=url+"?q="+str;url=url+"&sid="+Math.random();xmlHttp.onreadystatechange=stateChanged;xmlHttp.open("GET",url,true);xmlHttp.send(null);}function stateChanged() { if (xmlHttp.readyState==4){var xmlDoc=xmlHttp.responseXML.documentElement;document.getElementById("companyname").innerHTML=xmlDoc.getElementsByTagName("compname")[0].childNodes[0].nodeValue;document.getElementById("contactname").innerHTML=xmlDoc.getElementsByTagName("contname")[0].childNodes[0].nodeValue;document.getElementById("address").innerHTML=xmlDoc.getElementsByTagName("address")[0].childNodes[0].nodeValue;document.getElementById("city").innerHTML=xmlDoc.getElementsByTagName("city")[0].childNodes[0].nodeValue;document.getElementById("country").innerHTML=xmlDoc.getElementsByTagName("country")[0].childNodes[0].nodeValue;}}function GetXmlHttpObject(){var xmlHttp=null;try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); }catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } }return xmlHttp;}
showCustomer() 和 GetXmlHttpObject() 與上一節相同。stateChanged() 函數稍早前也在本教程中使用過。不過,這次我們通過 responseXML 以 XML 文檔返回結果,並使用 DOM 來提取要顯示的值。
AJAX 伺服器頁面
這個被 JavaScript 調用的伺服器頁面,是名為 "getcustomer_xml.asp" 的簡單 ASP 檔案。
該頁面使用 VBScript 編寫,針對 Internet 資訊服務器 (IIS)。可以用 PHP 或其他伺服器語言,簡單地重寫該頁面。
請看在 PHP 中對應的例子(測試:缺具體頁面)。
這段代碼執行針對資料庫的 SQL 查詢,並以 XML 文檔返回結果:
<%response.expires=-1response.contenttype="text/xml"sql="SELECT * FROM CUSTOMERS "sql=sql & " WHERE CUSTOMERID='" & request.querystring("q") & "'"on error resume nextset conn=Server.CreateObject("ADODB.Connection")conn.Provider="Microsoft.Jet.OLEDB.4.0"conn.Open(Server.Mappath("/db/northwind.mdb"))set rs=Server.CreateObject("ADODB.recordset")rs.Open sql, connif err <> 0 thenresponse.write(err.description)set rs=nothingset conn=nothingelseresponse.write("<?xml version='1.0' encoding='ISO-8859-1'?>")response.write("<company>")response.write("<compname>" &rs.fields("companyname")& "</compname>")response.write("<contname>" &rs.fields("contactname")& "</contname>")response.write("<address>" &rs.fields("address")& "</address>")response.write("<city>" &rs.fields("city")& "</city>")response.write("<country>" &rs.fields("country")& "</country>")response.write("</company>")end ifon error goto 0%>
請注意上面的 ASP 代碼中的第二行:response.contenttype="text/xml"。ContentType 屬性為 response 對象設定了 HTTP 內容類型。該屬性的預設值是 "text/html"。這次我們把內容類型設定為 XML。
然後我們從資料庫中選取資料,並使用這些資料構建 XML 文檔。