AJAX 可用来与 XML 文件进行交互式通信。
AJAX XML 实例
下面的实例将演示网页如何通过 AJAX 从 XML 文件读取信息:
当用户在上面的下拉列表中选择某张 CD 时,会执行名为 "showCD()" 的函数。该函数由 "onchange" 事件触发:html>
PHP中文网function showCD(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 浏览器执行
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getcd.php?q="+str,true);
xmlhttp.send();
}
Select a CD:
Select a CD:
Bob Dylan
Bonnie Tyler
Dolly Parton
showCD() 函数会执行以下步骤:
· 检查是否有 CD 被选择
· 创建 XMLHttpRequest 对象
· 创建在服务器响应就绪时执行的函数
· 向服务器上的文件发送请求
请注意添加到 URL 末端的参数(q)(包含下拉列表的内容
xml文件
Empire BurlesqueBob Dylan
USA
Columbia
10.90
1985
Maggie MayRod Stewart
UK
Pickwick
8.50
1990
Black angelSavage Rose
EU
Mega
10.90
1995
The dock of the bayOtis Redding
USA
Atlantic
7.90
1987
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;$ilength;$i++)
{
// 处理元素节点
if ($cd->item($i)->nodeType==1)
{
echo("" . $cd->item($i)->nodeName . ": ");
echo($cd->item($i)->childNodes->item(0)->nodeValue);
echo("
");
}
}
?>
当 CD 查询从 JavaScript 发送到 PHP 页面时,将发生:
1. PHP 创建 XML DOM 对象
2. 查找所有 元素中与 JavaScript 所传数据相匹配的名字
3. 输出 album 的信息,并发送回 "txtHint" 占位符
程序成果展示: