PHP and AJAX XML教程
在HTML表單
上面的例子中包含一個簡單的HTML表格,並連結到一個JavaScript :
<html><head><script src="selectcd.js"></script></head>
<body>
<form> Select a CD:<select name="cds" onchange="showCD(this.value)"><option value="Bob Dylan">Bob Dylan</option><option value="Bee Gees">Bee Gees</option><option value="Cat Stevens">Cat Stevens</option></select></form>
<p><div id="txtHint"><b>CD info will be listed here.</b></div></p>
</body></html>
例如解釋
正如你所看到的,這隻是一個簡單的HTML表單以一個簡單的下拉框中所謂的“光碟” 。
該段以下的形式包含一個專區所謂的“ txtHint ” 。該專區是用作預留位置資訊檢索的網路伺服器。
當使用者選擇的資料,一個函數稱為“ showCD ”執行。執行的職能是引發的“ onchange ”事件。
換句話說:每一次變化的使用者的價值在下拉框中,功能showCD被稱為。
XML檔案
XML檔案是“ cd_catalog.xml ” 。本檔案包含的CD收藏。
的JavaScript
這是JavaScript代碼儲存在檔案中“ selectcd.js ” :
var xmlHttpfunction showCD(str){ xmlHttp=GetXmlHttpObject()if (xmlHttp==null) { alert ("Browser does not support HTTP Request") return } var url="getcd.php"url=url+"?q="+strurl=url+"&sid="+Math.random()xmlHttp.onreadystatechange=stateChanged xmlHttp.open("GET",url,true)xmlHttp.send(null)}function stateChanged() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { 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;}
例如解釋
該stateChanged ( )和GetXmlHttpObject職能是一樣的最後一章,您可以到前一頁解釋這些
該showCD ( )函數
如果一個項目在下拉框中選擇執行的功能如下:
籲請GetXmlHttpObject函數建立一個XMLHTTP物件
界定了網址(檔)傳送給伺服器
添加一個參數( Q )的網址的內容,輸入欄位
添加一個隨機數字,以防止伺服器使用快取檔案
呼叫stateChanged改變時,就會觸發
開幕XMLHTTP物件與特定網址。
發送一個HTTP請求到伺服器
PHP頁面
伺服器分頁所謂的指令碼是一個簡單的PHP檔案名稱為“ getcd.php ” 。
該網頁是PHP寫成的使用XML的DOM載入XML檔案“ cd_catalog.xml ” 。
該代碼運行一個查詢的XML檔案,並傳回的結果為HTML :
<?php$q=$_GET["q"];
$xmlDoc = new DOMDocument();$xmlDoc->load("cd_catalog.xml");
$x=$xmlDoc->getElementsByTagName('ARTIST');
for ($i=0; $i<=$x->length-1; $i++){//Process only element nodesif ($x->item($i)->nodeType==1) { if ($x->item($i)->childNodes->item(0)->nodeValue == $q) { $y=($x->item($i)->parentNode); } }}
$cd=($y->childNodes);
for ($i=0;$i<$cd->length;$i++){ //Process only element nodesif ($cd->item($i)->nodeType==1) { echo($cd->item($i)->nodeName); echo(": "); echo($cd->item($i)->childNodes->item(0)->nodeValue); echo("<br />"); } }?>
例如解釋
當查詢是發送的JavaScript到PHP頁面以下情況:
PHP的建立一個XML DOM對象的“ cd_catalog.xml ”檔案
所有的“藝術家”的內容( nodetypes = 1 )的環通過找到一個名稱相匹配的一個發出的JavaScript 。
裁談會含有正確的藝術家發現
該專輯的資訊輸出和發送到“ txtHint ”佔位
轉載請註明來自http://www.111cn.net/wy/yw.html