ajax 可用來與 xml 文件進行交互式通信。
在下面的 ajax 實例中,我們將演示如何通過使用 ajax 技術,從 xml 文件中讀取信息。
上面的例子包含了一個簡單的 html 表單,以及指向一段 javascript 的鏈接:
<html><head><script src="selectcd.js"></script>
</head><body><form> 選擇 cd:<selectname="cds" onchange="showcd(this.value)"
><option value="bob dylan">bob dylan</option><option value="bonnie tyler">bonnie tyler</option><option value="dolly parton">dolly parton</option> </select></form><p><divid="txthint"
><em>在此列出 cd 信息。</em></div></p></body></html>
正如您所看到的,它只是一個帶有名為 "cds" 的下拉列表的簡單 html 表單。
表單下面的段落包含一個名為 "txthint" 的 div。該 div 用作從 web 服務器接受的數據的位置占位符。
當用戶選擇列表時,名為 "showcd" 的函數就會被執行。該函數的執行是 "onchange" 事件觸發的。換句話說,每當用戶改變了下拉列表的值,這個 showcd 函數就會被調用。
下面列出了 javascript 代碼。
這是存儲在文件 "selectcd.js" 中的 javascript 代碼:
var xmlhttpfunction showcd(str)
{ xmlhttp=getxmlhttpobject();if (xmlhttp==null) { alert ("your browser does not support ajax!"); return; } var url="getcd.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){ document.getelementbyid("txthint").innerhtml=xmlhttp.responsetext;}}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;}
被 javascript 調用的服務器頁面,是名為 "getcd.asp" 的簡單 asp 文件。
該頁面使用 vbscript 編寫,針對 internet 信息服務器 (iis)。可以用 php 或其他服務器語言,簡單地重寫該頁面。
請看在 php 中對應的例子(測試:缺具體頁面)。
該代碼執行針對 xml 文件的查詢,并以 html 返回結果:
<%response.expires=-1q=request.querystring("q")set xmldoc=server.createobject("microsoft.xmldom")xmldoc.async="false"xmldoc.load(server.mappath("cd_catalog.xml"))set nodes=xmldoc.selectnodes("catalog/cd[artist='" & q & "']")for each x in nodes for each y in x.childnodes response.write("<b>" & y.nodename & ":</b> ") response.write(y.text) response.write("<br />") nextnext%>
新聞熱點
疑難解答
圖片精選