PHP 示例 - AJAX 和 XML
AJAX 可用於與 XML 檔案進行互動式通訊。
AJAX XML 示例
以下示例將演示網頁如何透過 AJAX 從 XML 檔案中獲取資訊。
示例
CD 資訊將在此處列出...
示例說明 - HTML 頁面
當用戶在上面的下拉列表中選擇一張 CD 時,會執行一個名為 "showCD()" 的函式。該函式由 "onchange" 事件觸發。
<html>
<head>
<script>
function showCD(str) {
if (str=="") {
document.getElementById("txtHint").innerHTML="";
return;
}
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (this.readyState==4 && this.status==200) {
document.getElementById("txtHint").innerHTML=this.responseText;
}
}
xmlhttp.open("GET","getcd.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
選擇一張 CD
<select name="cds" onchange="showCD(this.value)">
<option value="">選擇一張 CD:</option>
<option value="Bob Dylan">Bob Dylan</option>
<option value="Bee Gees">Bee Gees</option>
<option value="Cat Stevens">Cat Stevens</option>
</select>
</form>
<div id="txtHint"><b>CD 資訊將在此處列出...</b></div>
</body>
</html>
showCD() 函式執行以下操作:
- 檢查是否選擇了 CD
- 建立一個 XMLHttpRequest 物件
- 建立伺服器響應準備好時要執行的函式
- 將請求傳送到伺服器上的檔案
- 請注意,一個引數 (q) 被新增到了 URL 中(其值為下拉列表的內容)。
PHP 檔案
上述 JavaScript 呼叫的伺服器頁面是一個名為 "getcd.php" 的 PHP 檔案。
該 PHP 指令碼載入一個 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++) {
//只處理元素節點
if ($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++) {
//只處理元素節點
if ($cd->item($i)->nodeType==1) {
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
echo($cd->item($i)->childNodes->item(0)->nodeValue);
echo("<br>");
}
}
?>
當 CD 查詢從 JavaScript 傳送到 PHP 頁面時,會發生以下情況:
- PHP 建立一個 XML DOM 物件
- 找到所有與從 JavaScript 傳送的名稱匹配的 <artist> 元素
- 輸出專輯資訊(傳送到 "txtHint" 佔位符)