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 ÎĵµÊä³öÊý¾Ý