PHP ºÍ AJAX XML ʵÀý
AJAX ¿ÉÓë XML Îļþ½øÐн»»¥Ê½Í¨ÐÅ¡£
AJAX XML ʵÀý
ÔÚÏÂÃæµÄ AJAX ʵÀýÖУ¬ÎÒÃǽ«ÑÝÊ¾ÍøÒ³ÈçºÎʹÓà AJAX ¼¼Êõ´Ó XML ÎļþÖжÁÈ¡ÐÅÏ¢¡£
ÔÚÏÂÃæµÄÏÂÁÐÁбíÖÐÑ¡ÔñÒ»¸ö CD
±¾Àý°üÀ¨ÈýÕÅÒ³Ãæ£º
- Ò»¸ö¼òµ¥ HTML ±íµ¥
- Ò»¸ö XML Îļþ
- Ò»¸ö JavaScript Îļþ
- Ò»ÕÅ PHP Ò³Ãæ
HTML ±íµ¥
ÉÏÃæµÄÀý×Ó°üº¬ÁËÒ»Õżòµ¥µÄ HTML ±íµ¥£¬ÒÔ¼°Ö¸Ïò JavaScript µÄÁ´½Ó£º
<html> <head> <script src="selectcd.js"></script> </head> <body> <form> Select a CD: <select name="cds" onchange="showCD(this.value)"> <option value="Bob Dylan">Bob Dylan</option> <option value="Bee Gees">Bee Gees</option> <option value="Cat Stevens">Cat Stevens</option> </select> </form> <p> <div id="txtHint"><b>CD info will be listed here.</b></div> </p> </body> </html>
Àý×Ó½âÊÍ£º
ÕýÈçÄú¿´µ½µÄ£¬Ëü½ö½öÊÇÒ»Õżòµ¥µÄ HTML ±íµ¥£¬ÆäÖдøÓÐÃûΪ "cds" µÄÏÂÀÁÐ±í¡£
±íµ¥ÏÂÃæµÄ¶ÎÂä°üº¬ÁËÒ»¸öÃûΪ "txtHint" µÄ div¡£Õâ¸ö div ÓÃ×÷´Ó web ·þÎñÆ÷¼ìË÷µ½µÄÊý¾ÝµÄռλ·û¡£
µ±Óû§Ñ¡ÔñÊý¾Ýʱ£¬»áÖ´ÐÐÃûΪ "showCD" µÄº¯Êý¡£Õâ¸öº¯ÊýµÄÖ´ÐÐÊÇÓÉ "onchange" ʼþ´¥·¢µÄ¡£
»»¾ä»°Ëµ£¬Ã¿µ±Óû§¸Ä±äÁËÏÂÀÁбíÖеÄÖµ£¬¾Í»áµ÷Óà showCD º¯Êý¡£
XML Îļþ
XML ÎļþÊÇ "cd_catalog.xml"¡£¸ÃÎļþÖаüº¬ÁËÓÐ¹Ø CD ÊղصÄÊý¾Ý¡£
JavaScript
ÕâÊÇ´æ´¢ÔÚ "selectcd.js" ÎļþÖÐµÄ JavaScript ´úÂ룺
var xmlHttp function showCD(str) { xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Browser does not support HTTP Request") return } var url="getcd.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") { document.getElementById("txtHint").innerHTML=xmlHttp.responseText } } function GetXmlHttpObject() { var xmlHttp=null; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; }
Àý×Ó½âÊÍ£º
stateChanged() ºÍ GetXmlHttpObject º¯ÊýÓëÉÏÒ»½ÚÖеÄÏàͬ£¬Äú¿ÉÒÔ²ÎÔÄÉÏÒ»Ò³ÖеÄÏà¹Ø½âÊÍ¡£
showCD() º¯Êý
¼ÙÈçÑ¡ÔñÁËÏÂÀÁбíÖеÄij¸öÏîÄ¿£¬Ôòº¯ÊýÖ´ÐУº
- µ÷Óà GetXmlHttpObject º¯ÊýÀ´´´½¨ XMLHTTP ¶ÔÏó
- ¶¨Òå·¢Ë͵½·þÎñÆ÷µÄ URL£¨ÎļþÃû£©
- Ïò URL Ìí¼Ó´øÓÐÏÂÀÁбíÄÚÈݵIJÎÊý (q)
- Ìí¼ÓÒ»¸öËæ»úÊý£¬ÒÔ·À·þÎñÆ÷ʹÓûº´æµÄÎļþ
- µ±´¥·¢Ê¼þʱµ÷Óà stateChanged
- ͨ¹ý¸ø¶¨µÄ URL ´ò¿ª XMLHTTP ¶ÔÏó
- Ïò·þÎñÆ÷·¢ËÍ HTTP ÇëÇó
PHP Ò³Ãæ
Õâ¸ö±» JavaScript µ÷ÓõķþÎñÆ÷Ò³Ãæ£¬ÊÇÒ»¸öÃûΪ "getcd.php" µÄ¼òµ¥ PHP Îļþ¡£
ÕâÕÅÒ³ÃæÊÇÓà PHP ±àдµÄ£¬Ê¹Óà XML DOM À´¼ÓÔØ XML Îĵµ "cd_catalog.xml"¡£
´úÂëÔËÐÐÕë¶Ô XML ÎļþµÄ²éѯ£¬²¢ÒÔ HTML ·µ»Ø½á¹û£º
<?php $q=$_GET["q"]; $xmlDoc = new DOMDocument(); $xmlDoc->load("cd_catalog.xml"); $x=$xmlDoc->getElementsByTagName('ARTIST'); for ($i=0; $i<=$x->length-1; $i++) { //Process only element nodes if ($x->item($i)->nodeType==1) { if ($x->item($i)->childNodes->item(0)->nodeValue == $q) { $y=($x->item($i)->parentNode); } } } $cd=($y->childNodes); for ($i=0;$i<$cd->length;$i++) { //Process only element nodes if ($cd->item($i)->nodeType==1) { echo($cd->item($i)->nodeName); echo(": "); echo($cd->item($i)->childNodes->item(0)->nodeValue); echo("<br />"); } } ?>
Àý×Ó½âÊÍ
µ±ÇëÇó´Ó JavaScript ·¢Ë͵½ PHP Ò³ÃæÊ±£¬·¢Éú£º
- PHP ´´½¨ "cd_catalog.xml" ÎļþµÄ XML DOM ¶ÔÏó
- Ñ»·ËùÓÐ "artist" ÔªËØ (nodetypes = 1)£¬²éÕÒÓë JavaScript Ëù´«Êý¾ÝÏòÆ¥ÅäµÄÃû×Ö
- ÕÒµ½ CD °üº¬µÄÕýÈ· artist
- Êä³ö album µÄÐÅÏ¢£¬²¢·¢Ë͵½ "txtHint" ռλ·û