PHP 和 AJAX responseXML 实例

AJAX inaweza kutumika kwa kutoa data ya database kwa kwa XML.

Mfululizo wa AJAX wa Database kuwa XML (Maelezo wa matokeo: hii inaonekana kuwa ina haki za kufanya kazi)

Kwenye mfululizo wa AJAX ya hizi, tutafikia ukurasa huo kama ujumbe wa MySQL database, kutumia data hii kwa kubadilisha hatua ya XML, na kutumia hatua hii kwa kusoma habari kwenye maeneo mbalimbali.

Mfululizo hii inayofanana na mfululizo wa "PHP AJAX Database" katika sekta ya awali, lakini na muungano mkubwa: kwenye mfululizo hii, tunapokea data ya tukio cha XML kutoka kwenye ukurasa wa PHP kwa kutumia funi ya responseXML.

Kupokea kifaa cha XML kama msahau inasababisha kwamba tunaweza kurekebisha mahali mbalimbali kwenye ukurasa, na si kuwa tu kutumia kipindi cha PHP kwa kushona habari.

Kwenye mfululizo hii, tutumia habari zilizopokea kutoka kwenye database kwa kurekebisha vifaa vingine vya <span>.

Chagua jina kwenye orodha ya kichwa

Chagua mtu wa kawaida:

 

Kikabla hiki kinamilika ya miti mitano:

  • Database ya MySQL
  • Fomu ya HTML kimsingi
  • JavaScript
  • Makua ya PHP

Database

Database inayotumiwa kwenye mfululizo hii inahusiana kama hii:

id Jina la Kwanza Jina la Mziki Umri Mji wa Asili Kazi
1 Peter Griffin 41 Quahog Mbarakati ya Mabara
2 Lois Griffin 40 Newport Mwalimu wa Piano
3 Joseph Swanson 39 Quahog Ofisi ya Polisi
4 Glenn Quagmire 41 Quahog Pilot

Fomu ya HTML

Mfano hii inaonyeshwa na fomu ya HTML kimsingi na kichukio cha JavaScript:

<html>
<head>
<script src="responsexml.js"></script>
</head>
<body>
<form> 
Chagua mtu:
<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>

Mfano wa fursa - Fomu ya HTML

  • Fomu ya HTML ni chagua cha kawaida na uwezo wa jina wa kifupi ni "users", na madai yanaingia na kikabla cha id ya kituo cha data
  • Kando ya fomu kuna kina <span> zaidi, zilizotumika kama mimeza ya madai mengine ambao tunaingia.
  • Kwa kila mara mtu anachagua chaguo kwa kawaida, programu "showUser()" inafanya kazi. Kazi ya programu hii inapangwa na matukio "onchange"

Kwa mbinu hiyo, kila mara kwenda uendelevu wa chagua cha kawaida, programu showUser() inafanya kazi, na inapakua matokeo katika kina <span> kidakika.

JavaScript

Hii ni kwa KiSwahili, hii ni makini ya JavaScript ambayo hifadhiwa katika faili "responsexml.js":

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
 }

Maelezo ya Mfano:

showUser() na GetXmlHttpObject funiki na PHP 和 AJAX MySQL 数据库实例 Mafanikio ya hili ni pamoja. Unaweza kuangalia mafanikio ya maana.

Funksheni ya stateChanged()

Ikiwa kuchaguliwa kipya cha orodha ya kubadilika, mfuatilia hii inafanya:

  1. Kwa kutumia mfano wa responseXML, kuwasiliana na variable ya "xmlDoc" kama mafuta ya XML
  2. Hili inafanya kumpata data kutoka kwa mafuta ya XML hii, na kuwepo katika kina la "span" kwa uwanja wa kina hili

Makua ya PHP

Makua hii inayotumika na JavaScript, ni faili ya PHP ya kawaida inayoitwa "responsexml.php".

Makua hii inayoitwa na PHP na inatumiwa msingi wa data wa MySQL.

Mafuatilia ya uandikwa kwa PHP inafanya mtaarifu wa SQL kwa msingi wa data na inarudi mafuta ya 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);
?>

Maelezo ya Mfano:

Kwa sababu ya inayotumika na JavaScript inatoka PHP page hivi inatendeka:

  • Mawasiliano wa PHP wa content-type inaweza kuweka "text/xml"
  • Mawasiliano wa PHP inaweza kuweka "no-cache" kusikitisha hifadhi
  • Kuweka data iliyotolewa na mawakilishi wa HTML kwenye variable $q
  • PHP Inafungua mpangilio wa uunganishaji na mawasiliano wa MySQL
  • Kupata "user" na id ya kigeukia
  • Kuweka data kwa muhimu wa faili ya XML