PHP ºÍ AJAX responseXML ʵÀý
AJAX ¿ÉÓÃÓÚÒÔ XML ·µ»ØÊý¾Ý¿âÐÅÏ¢¡£
AJAX Database ת XML ʵÀý £¨²âÊÔ˵Ã÷£º¸ÃʵÀý¹¦ÄÜδʵÏÖ£©
ÔÚÏÂÃæµÄ AJAX ʵÀýÖУ¬ÎÒÃǽ«ÑÝÊ¾ÍøÒ³ÈçºÎ´Ó MySQL Êý¾Ý¿âÖжÁÈ¡ÐÅÏ¢£¬°ÑÊý¾Ýת»»Îª XML Îĵµ£¬²¢ÔÚ²»Í¬µÄµØ·½Ê¹ÓÃÕâ¸öÎĵµÀ´ÏÔʾÐÅÏ¢¡£
±¾ÀýÓëÉÏÒ»½ÚÖÐµÄ "PHP AJAX Database" Õâ¸öÀý×ÓºÜÏàËÆ£¬²»¹ýÓÐÒ»¸öºÜ´óµÄ²»Í¬£ºÔÚ±¾ÀýÖУ¬ÎÒÃÇͨ¹ýʹÓà responseXML º¯Êý´Ó PHP Ò³ÃæµÃµ½µÄÊÇ XML ÐÎʽµÄÊý¾Ý¡£
°Ñ XML Îĵµ×÷ΪÏìÓ¦À´½ÓÊÕ£¬Ê¹ÎÒÃÇÓÐÄÜÁ¦¸üÐÂÒ³ÃæµÄ¶à¸öλÖ㬶ø²»½ö½öÊǽÓÊÕÒ»¸ö PHP Êä³ö²¢ÏÔʾ³öÀ´¡£
ÔÚ±¾ÀýÖУ¬ÎÒÃǽ«Ê¹ÓôÓÊý¾Ý¿â½ÓÊÕµ½µÄÐÅÏ¢À´¸üжà¸ö <span> ÔªËØ¡£
ÔÚÏÂÀÁбíÖÐÑ¡ÔñÒ»¸öÃû×Ö
´ËÁÐÓÉËĸöÔªËØ×é³É£º
- MySQL Êý¾Ý¿â
- ¼òµ¥µÄ HTML ±íµ¥
- JavaScript
- PHP Ò³Ãæ
Êý¾Ý¿â
½«ÔÚ±¾ÀýÖÐʹÓõÄÊý¾Ý¿â¿´ÆðÀ´ÀàËÆÕâÑù£º
| 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 ±íµ¥
ÉÏÃæµÄÀý×Ó°üº¬ÁËÒ»¸ö¼òµ¥µÄ 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() º¯Êý
Èç¹ûÑ¡ÔñÁËÏÂÀÁбíÖеÄÏîÄ¿£¬¸Ãº¯ÊýÖ´ÐУº
- ͨ¹ýʹÓà responseXML º¯Êý£¬°Ñ "xmlDoc" ±äÁ¿¶¨ÒåΪһ¸ö XML Îĵµ
- ´ÓÕâ¸ö 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);
?>
Àý×Ó½âÊÍ£º
µ±²éѯ´Ó JavaScript ËÍ´ï PHP Ò³ÃæÊ±£¬»á·¢Éú£º
- PHP ÎĵµµÄ content-type ±»ÉèÖÃΪ "text/xml"
- PHP Îĵµ±»ÉèÖÃΪ "no-cache"£¬ÒÔ·ÀÖ¹»º´æ
- Óà HTML Ò³ÃæËÍÀ´µÄÊý¾ÝÉèÖà $q ±äÁ¿
- PHP ´ò¿ªÓë MySQL ·þÎñÆ÷µÄÁ¬½Ó
- ÕÒµ½´øÓÐÖ¸¶¨ id µÄ "user"
- ÒÔ XML ÎĵµÊä³öÊý¾Ý