PHP+AJAX教程(6):AJAX reoeXML实例_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

PHP+AJAX教程(6):AJAX reoeXML实例

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:实例教程'数据库
黑客防线网安网讯:  AJAX可用于以XML返回数据库信息。    AJAXDatabase转XML实例(测试说明:该实例功能未实现)    在下面的AJAX实例中,我们将演示网页如何从MySQL数据库中读取信息,把数据转换为...
  AJAX可用于以XML返回数据库信息
  
  AJAXDatabase转XML实例(测试说明:该实例功能未实现)
  
  在下面的AJAX实例中我们将演示网页如何从MySQL数据库中读取信息把数据转换为XML文档,并在不同的地方使用这个文档来显示信息
  
  本例与上一节中的"PHPAJAXDatabase"这个例子很相似,不过有一个很大的不同:在本例中,我们通过使用responseXML函数从PHP页面得到的是XML形式的数据。
  
  把XML文档作为响应来接收,使我们有能力更新页面的多个位置,而不仅仅是接收一个PHP输出并显示出来。
  
  在本例中,我们将使用从数据库接收到的信息来更新多个<span>元素。
  
  在下拉列表中选择一个名字
  
  SelectaUser:PeterGriffinLoisGriffinJosephSwansonGlennQuagmire
  
  此列由四个元素组成:
  
  MySQL数据库
  
  简单的HTML表单
  
  JavaScript
  
  PHP页面
  
  数据库
  
  将在本例中使用的数据库看起来类似这样:
  
  idFirstNameLastNameAgeHometownJob
  
  1PeterGriffin41QuahogBrewery
  
  2LoisGriffin40NewportPianoTeacher
  
  3JosephSwanson39QuahogPoliceOfficer
  
  4GlennQuagmire41QuahogPilot
  
  HTML表单
  
  上面的例子包含了一个简单的HTML表单,以及指向JavaScript的链接:
  
  <html>
  
  <head>
  
  <scriptsrc="responsexml.js"></script>
  
  </head>
  
  <body>
  
  <form>
  
  SelectaUser:
  
  <selectname="users"onchange="showUser(this.value)">
  
  <optionvalue="1">PeterGriffin</option>
  
  <optionvalue="2">LoisGriffin</option>
  
  <optionvalue="3">GlennQuagmire</option>
  
  <optionvalue="4">JosephSwanson</option>
  
  </select>
  
  </form>
  
  <h2>
  
  <spanid="firstname"></span>&nbsp;<spanid="lastname"></span>
  
  </h2>
  
  <spanid="job"></span>
  
  <divstyle="text-align:right">
  
  <spanid="age_text"></span>
  
  <spanid="age"></span>
  
  <spanid="hometown_text"></span>
  
  <spanid="hometown"></span>
  
  </div>
  
  </body>
  
  </html>
  
  例子解释-HTML表单
  
  HTML表单是一个下拉列表,其name属性的值是"users",可选项的值与数据库的id字段相对应
  
  表单下面有几个<span>元素,它们用作我们所接收到的不同的值的占位符
  
  当用户选择了具体的选项,函数"showUser()"就会执行。该函数的执行由"onchange"事件触发
  
  换句话说,每当用户在下拉列表中改变了值,函数showUser()就会执行,并在指定的<span>元素中输出结果。
  
  JavaScript
  
  这是存储在文件"responsexml.js"中的JavaScript代码:
  
  varxmlHttp
  
  functionshowUser(str)
  
  {
  
  xmlHttp=GetXmlHttpObject()
  
  if(xmlHttp==null)
  
  {
  
  alert("BrowserdoesnotsupportHTTPRequest")
  
  return
  
  }
  
  varurl="responsexml.php"
  
  url=url+"?q="+str
  
  url=url+"&sid="+Math.random()
  
  xmlHttp.onreadystatechange=stateChanged
  
  xmlHttp.open("GET",url,true)
  
  xmlHttp.send(null)
  
  }
  
  functionstateChanged()
  
  {
  
  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;
  
  }
  
  }
  
  functionGetXmlHttpObject()
  
  {
  
  varobjXMLHttp=null
  
  if(window.XMLHttpRequest)
  
  {
  
  objXMLHttp=newXMLHttpRequest()
  
  }
  
  elseif(window.ActiveXObject)
  
  {
  
  objXMLHttp=newActiveXObject("Microsoft.XMLHTTP")
  
  }
  
  returnobjXMLHttp
  
  }
  
  例子解释:
  
  showUser()与GetXmlHttpObject函数与PHP和AJAXMySQL数据库实例这一节中的例子是相同的。您可以参阅其中的相关解释。
  
  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");
  
  //Adateinthepast
  
  header("Expires:Mon,26Jul199705:00:00GMT");
  
  $q=$_GET["q"];
  
  $con=mysql_connect('localhost','peter','abc123');
  
  if(!$con)
  
  {
  
  die('Couldnotconnect:'.mysql_error());
  
  }
  
  mysql_select_db("ajax_demo",$con);
  
  $sql="SELECT*FROMuserWHEREid=".$q."";
  
  $result=mysql_query($sql);
  
  echo'<?xmlversion="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文档输出数据
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17516-1.html
网站维护教程更新时间:2012-09-21 05:20:20  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer