21xrx.com
2024-03-19 16:04:25 Tuesday
登录
文章检索 我的文章 写文章
PHP示例 - AJAX和XML
2021-07-27 15:55:54 深夜i     --     --
PHP示例 -  AJAX和XML


AJAX可用于与XML文件进行交互式通信。


AJAX XML示例

以下示例将演示网页如何使用AJAX从XML文件中获取信息:

Select a CD:Bob DylanBee GeesCat Stevens


CD info will be listed here...

示例解释 - 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>
Select a CD:
<select name="cds" onchange="showCD(this.value)">
  <option value="">Select a 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 info will be listed here...</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++) {
  //Process only element nodes
  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++) {
  //Process only element nodes
  if ($cd->item($i)->nodeType==1) {
    echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
    echo($cd->item($i)->childNodes->item(0)->nodeValue);
    echo("<br>");
  }
}
?>

当从JavaScript发送到PHP页面的CD查询时,以下 发生:

 

  1. PHP创建一个XML DOM对象
  2. 查找与 JavaScript 发送的名称匹配的所有 <artist> 元素
  3. 输出信息(显示到id为"txtHint"的元素)

 

 

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章