PHP ºÍ AJAX responseXML ʵÀý

AJAX ¿ÉÓÃÓÚÒÔ XML ·µ»ØÊý¾Ý¿âÐÅÏ¢¡£

AJAX Database ת XML ʵÀý £¨²âÊÔ˵Ã÷£º¸ÃʵÀý¹¦ÄÜδʵÏÖ£©

ÔÚÏÂÃæµÄ AJAX ʵÀýÖУ¬ÎÒÃǽ«ÑÝÊ¾ÍøÒ³ÈçºÎ´Ó MySQL Êý¾Ý¿âÖжÁÈ¡ÐÅÏ¢£¬°ÑÊý¾Ýת»»Îª XML Îĵµ£¬²¢ÔÚ²»Í¬µÄµØ·½Ê¹ÓÃÕâ¸öÎĵµÀ´ÏÔʾÐÅÏ¢¡£

±¾ÀýÓëÉÏÒ»½ÚÖÐµÄ "PHP AJAX Database" Õâ¸öÀý×ÓºÜÏàËÆ£¬²»¹ýÓÐÒ»¸öºÜ´óµÄ²»Í¬£ºÔÚ±¾ÀýÖУ¬ÎÒÃÇͨ¹ýʹÓà responseXML º¯Êý´Ó PHP Ò³ÃæµÃµ½µÄÊÇ XML ÐÎʽµÄÊý¾Ý¡£

°Ñ XML Îĵµ×÷ΪÏìÓ¦À´½ÓÊÕ£¬Ê¹ÎÒÃÇÓÐÄÜÁ¦¸üÐÂÒ³ÃæµÄ¶à¸öλÖ㬶ø²»½ö½öÊǽÓÊÕÒ»¸ö PHP Êä³ö²¢ÏÔʾ³öÀ´¡£

ÔÚ±¾ÀýÖУ¬ÎÒÃǽ«Ê¹ÓôÓÊý¾Ý¿â½ÓÊÕµ½µÄÐÅÏ¢À´¸üжà¸ö <span> ÔªËØ¡£

ÔÚÏÂÀ­ÁбíÖÐÑ¡ÔñÒ»¸öÃû×Ö

Select a User:

 

´ËÁÐÓÉËĸöÔªËØ×é³É£º

  • 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>&nbsp;<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() º¯Êý

Èç¹ûÑ¡ÔñÁËÏÂÀ­ÁбíÖеÄÏîÄ¿£¬¸Ãº¯ÊýÖ´ÐУº

  1. ͨ¹ýʹÓà responseXML º¯Êý£¬°Ñ "xmlDoc" ±äÁ¿¶¨ÒåΪһ¸ö XML Îĵµ
  2. ´ÓÕâ¸ö 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 ÎĵµÊä³öÊý¾Ý
VUE