PHP ແລະ AJAX responseXML ວິດີຂະບວນ

AJAX can be used to return database information in XML format.

AJAX Database To XML Example (Test Note: This example is not implemented)

ໃນຄັ້ງນີ້ພວກເຮົາຈະສະແດງວ່າເວລາບໍ່ມີຄວາມຫຼາຍຈະຕິດຕາມຖານຂໍ້ມູນ MySQL ເພື່ອປ່ຽນຂໍ້ມູນເພື່ອປ່ຽນ XML ແລະສະແດງຂໍ້ມູນອອກໃນຫຼາຍບ່ອນ

ຄັ້ງນີ້ຄວາມທີ່ພາຍໃນຫຼັກການພົບກັນກັບ "PHP AJAX Database" ຄັນນີ້ມີຄວາມແຕກຕ່າງຫຼາຍ: ໃນຄັ້ງນີ້ພວກເຮົາຈະໃຊ້ responseXML ທີ່ມາຈາກ PHP ເວລາບໍ່ມີຄວາມຫຼາຍ

ການຮັບ XML ຕົວແທນຄວາມຈະຫຼວດພວກເຮົາມີຄວາມສາມາດປັບປຸງຫຼາຍບ່ອນໃນເວລາມື້ອອນ ບໍ່ແມ່ນພຽງແຕ່ຮັບຄຳສົມທົບ PHP ແລະສະແດງອອກ

ໃນຄັ້ງນີ້ພວກເຮົາຈະໃຊ້ຂໍ້ມູນທີ່ມາຈາກຖານຂໍ້ມູນເພື່ອປັບປຸງຫຼາຍ <span> ປ່ຽນຕາມລາຍການ

ເລືອກຊື່ຄົນໜຶ່ງຈາກລາຍການຫົວໜ້າ

ການເລືອກຜູ້ນຳໃນລາຍການຫົວໜ້າ:

 

ການຕັ້ງກອງຂອງຕົວຂໍ້ພາຍໃນນີ້ປະກອບມີສີ່ປ່າງ:

  • MySQL ຖານຂໍ້ມູນ
  • HTML ຟອມຄັດຄາຍທີ່ລະອຽດຫຼັກ
  • JavaScript
  • PHP 页面

ຖານຂໍ້ມູນ

ຖານຂໍ້ມູນທີ່ຈະໃຊ້ໃນຄັ້ງນີ້ບາງກໍ່ຄືດັ່ງກ່າວນັ້ນ:

id ຊື່ໜຶ່ງ ຊື່ນຳ ອາຍຸ ສະຖານທີ່ການເປີດ ວຽກ
1 Peter Griffin 41 Quahog ມອງການກະພັນ
2 Lois Griffin 40 Newport ຄູຝຶກອານຸສາວິດ
3 Joseph Swanson 39 Quahog ຕຳຫຼວດນັກການ
4 Glenn Quagmire 41 Quahog Pilot

HTML ຟອມຄັດຄາຍ

ຄວາມທີ່ພາຍໃນຫຼັກການພົບກັນນັ້ນກວມເອົາ HTML ຟອມຄັດຄາຍຄວາມລຽງເຄື່ອງ ແລະ ການກ່ຽວພັນກັບ 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() 与 GetXmlHttpObject 函数与 PHP ແລະ AJAX MySQL ວິດີຂະບວນຖານຂໍ້ມູນ 这一节中的例子是相同的。您可以参阅其中的相关解释。

stateChanged() 函数

如果选择了下拉列表中的项目,该函数执行:

  1. 通过使用 responseXML 函数,把 "xmlDoc" 变量定义为一个 XML 文档
  2. 从这个 XML 文档中取回数据,把它们放在正确的 "span" 元素中

PHP 页面

这个由 JavaScript 调用的服务器页面,是一个名为 "responsexml.php" 的简单的 PHP 文件。

该页面由 PHP 编写,并使用 MySQL 数据库。

代码会运行一段针对数据库的 SQL 查询,并以 XML 文档返回结果:

<?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);
?>

ກໍານົດຄວາມຄິດກ່ຽວກັບ ການສະແດງ

ບໍ່ມີ: PHP JavaScript ການສົ່ງຄຳຖາມຕໍ່ PHP Page

  • PHP ການຕັ້ງຂໍ້ມູນ content-type document ມີ "text/xml"
  • PHP ການຕັ້ງຂໍ້ມູນ document ມີ "no-cache" ເພື່ອປ້ອງກັນການຕັ້ງຄັນ
  • PHP ການຕັ້ງຂໍ້ມູນ $q ຈາກຂໍ້ມູນທີ່ສົ່ງມາໂດຍ HTML ບີບ
  • PHP ການເປີດການເຊື່ອມຕໍ່ MySQL Server
  • ການຄົ້ນຫາ "user" ທີ່ມີ id ສະເພາະ
  • ການອອກຂໍ້ມູນທີ່ພົບວ່າ XML ບັນທຶກ