PHP da AJAX responseXML shafin

AJAX 可用于以 XML 返回数据库信息。

AJAX Database 转 XML 实例 (测试说明:该实例功能未实现)

在下面的 AJAX 实例中,我们将演示网页如何从 MySQL 数据库中读取信息,把数据转换为 XML 文档,并在不同的地方使用这个文档来显示信息。

本例与上一节中的 "PHP AJAX Database" 这个例子很相似,不过有一个很大的不同:在本例中,我们通过使用 responseXML 函数从 PHP 页面得到的是 XML 形式的数据。

把 XML 文档作为响应来接收,使我们有能力更新页面的多个位置,而不仅仅是接收一个 PHP 输出并显示出来。

在本例中,我们将使用从数据库接收到的信息来更新多个 元素。

在下拉列表中选择一个名字

请选择一位用户:

 

此列由四个元素组成:

  • MySQL database
  • simple HTML form
  • JavaScript

database

amatiwari database da zai wakilin da za a fi so a ciki a ciki ya kwanan nan:

id FirstName LastName Age Hometown Job
1 Peter Griffin 41 Quahog Brewery
2 Lois Griffin 40 Newport Piano Teacher
3 Joseph Swanson 39 Quahog Police Officer
4 Glenn Quagmire 41 Quahog Pilot

HTML form

amatiwari kaka kawar aru HTML form kawar da likita zuwa JavaScript:

<html>
<head>
<script src="responsexml.js"></script>
</head>
<body>
<form> 
Select a User:
<select name="users" onchange="showUser(this.value)">
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
</form>
<h2>
<span id="firstname"></span> <span id="lastname"></span>
</h2>
<span id="job"></span>
<div style="text-align: right">
<span id="age_text"></span>
<span id="age"></span>
<span id="hometown_text"></span>
<span id="hometown"></span>
</div>
</body>
</html>

例子解释 - HTML 表单

  • HTML 表单是一个下拉列表,其 name 属性的值是 "users",可选项的值与数据库的 id 字段相对应
  • 表单下面有几个 <span> 元素,它们用作我们所接收到的不同的值的占位符
  • 当用户选择了具体的选项,函数 "showUser()" 就会执行。该函数的执行由 "onchange" 事件触发

换句话说,每当用户在下拉列表中改变了值,函数 showUser() 就会执行,并在指定的 <span> 元素中输出结果。

JavaScript

这是存储在文件 "responsexml.js" 中的 JavaScript 代码:

var xmlHttp
function showUser(str)
 { 
 xmlHttp=GetXmlHttpObject()
 if (xmlHttp==null)
  {
  alert ("Browser does not support HTTP Request")
  return
  } 
 var url="responsexml.php"
 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 || xmlHttp.readyState=="complete")
{
 xmlDoc=xmlHttp.responseXML;
 document.getElementById("firstname").innerHTML=
 xmlDoc.getElementsByTagName("firstname")[0].childNodes[0].nodeValue;
 document.getElementById("lastname").innerHTML=
 xmlDoc.getElementsByTagName("lastname")[0].childNodes[0].nodeValue;
 document.getElementById("job").innerHTML=
 xmlDoc.getElementsByTagName("job")[0].childNodes[0].nodeValue;
 document.getElementById("age_text").innerHTML="Age: ";
 document.getElementById("age").innerHTML=
 xmlDoc.getElementsByTagName("age")[0].childNodes[0].nodeValue;
 document.getElementById("hometown_text").innerHTML="<br/>From: ";
 document.getElementById("hometown").innerHTML=
 xmlDoc.getElementsByTagName("hometown")[0].childNodes[0].nodeValue;
 }
}
function GetXmlHttpObject()
 { 
 var objXMLHttp = null
 if (window.XMLHttpRequest)
  {
  objXMLHttp = new XMLHttpRequest();
  }
 else if (window.ActiveXObject)
  {
  objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
 return objXMLHttp
 }

توضیح مثال:

showUser() and GetXmlHttpObject function with PHP da AJAX MySQL kwarin doki The examples in this section are the same. You can refer to the relevant explanations.

stateChanged() function

If an item in the dropdown list is selected, this function executes:

  1. By using the responseXML function, define the \
  2. Retrieve the data from this XML document and place them in the correct \

This server-side page, called \

This page is written in PHP and uses the MySQL database.

The code will run a SQL query against the database and return the results as an XML document:

<?php
header('Content-Type: text/xml');
header("Cache-Control: no-cache, must-revalidate");
//A date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

$q = $_GET["q"];

$con = mysql_connect('localhost', 'peter', 'abc123');
if (!
$con)
 {
 die('Could not connect: ".
" . mysql_error());
 }
mysql_select_db("ajax_demo", 
$con);
$sql="SELECT * FROM user WHERE id = ".
$q."";
$result = mysql_query($sql);
echo '<?xml version="1.0" encoding="ISO-8859-1"?>'
<person>';
while($row = mysql_fetch_array($result))
 {
 echo "<firstname>" . $row['FirstName'] . "</firstname>";
 echo "<lastname>" . $row['LastName'] . "</lastname>";
 echo "<age>" . $row['Age'] . "</age>";
 echo "<hometown>" . $row['Hometown'] . "</hometown>";
 echo "<job>" . $row['Job'] . "</job>";
 }
echo "</person>";
mysql_close($con);
?>

توضیح مثال:

وقتی که پرسش از JavaScript به صفحه PHP ارسال می‌شود، این اتفاق می‌افتد:

  • نوع محتوا (content-type) دستورالعمل PHP به "text/xml" تنظیم می‌شود
  • دستورالعمل PHP به "no-cache" تنظیم می‌شود تا از ذخیره‌سازی در حافظه جلوگیری شود
  • داده‌های ارسالی از صفحه HTML برای تنظیم متغیر $q استفاده می‌شود
  • PHP اتصال به سرور MySQL باز می‌کند
  • "user" با id مشخص پیدا شود
  • داده‌ها به صورت مستند XML خروجی داده می‌شود