PHP ºÍ AJAX XML ʵÀý

AJAX ¿ÉÓë XML Îļþ½øÐн»»¥Ê½Í¨ÐÅ¡£

AJAX XML ʵÀý

ÔÚÏÂÃæµÄ AJAX ʵÀýÖУ¬ÎÒÃǽ«ÑÝÊ¾ÍøÒ³ÈçºÎʹÓà AJAX ¼¼Êõ´Ó XML ÎļþÖжÁÈ¡ÐÅÏ¢¡£

ÔÚÏÂÃæµÄÏÂÁÐÁбíÖÐÑ¡ÔñÒ»¸ö CD

ÔÚ´ËÁгö 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¸öÏîÄ¿£¬Ôòº¯ÊýÖ´ÐУº

  1. µ÷Óà GetXmlHttpObject º¯ÊýÀ´´´½¨ XMLHTTP ¶ÔÏó
  2. ¶¨Òå·¢Ë͵½·þÎñÆ÷µÄ URL£¨ÎļþÃû£©
  3. Ïò URL Ìí¼Ó´øÓÐÏÂÀ­ÁбíÄÚÈݵIJÎÊý (q)
  4. Ìí¼ÓÒ»¸öËæ»úÊý£¬ÒÔ·À·þÎñÆ÷ʹÓûº´æµÄÎļþ
  5. µ±´¥·¢Ê¼þʱµ÷Óà stateChanged
  6. ͨ¹ý¸ø¶¨µÄ URL ´ò¿ª XMLHTTP ¶ÔÏó
  7. Ïò·þÎñÆ÷·¢ËÍ 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 Ò³ÃæÊ±£¬·¢Éú£º

  1. PHP ´´½¨ "cd_catalog.xml" ÎļþµÄ XML DOM ¶ÔÏó
  2. Ñ­»·ËùÓÐ "artist" ÔªËØ (nodetypes = 1)£¬²éÕÒÓë JavaScript Ëù´«Êý¾ÝÏòÆ¥ÅäµÄÃû×Ö
  3. ÕÒµ½ CD °üº¬µÄÕýÈ· artist
  4. Êä³ö album µÄÐÅÏ¢£¬²¢·¢Ë͵½ "txtHint" ռλ·û
VUE