本文实例讲述了Zend Framework框架中实现Ajax的方法。分享给大家供大家参考,具体如下:

开发平台:Windows XP SP2测试平台:FreeBSD 7.0开发工具:Netbeans 6.1使用框架:Zend Framework 1.5.2数据库: MySQL 5.0.51a

所需的数据库表和ZF相关目录以及文件:

一、表:

mysql> select * from news;+----+-------+---------------------+| id | title | add_time| +----+-------+---------------------+| 22 | rot  | 2008-01-04 00:00:00 || 23 | aaa  | 2008-01-04 00:00:00 || 24 | rot  | 2008-01-04 00:00:00 || 29 | dfeew | 2008-02-27 00:00:00 || 26 | jesse | 2008-02-27 00:00:00 || 27 | andle | 2008-02-27 00:00:00 || 28 | andle | 2008-02-27 00:00:00 |+----+-------+---------------------+

二、目录:

三、相关文件:

1.index.php //入口文件

2.TestDbCon.phhp //数据库连接文件

3.News.php //抽象出来的数据库表文件

4.TestController.php //控制器

5.ajax.phtml //客户操作页面,包含生成XMLHttpRequest对象,发ajax请求,处理请求,取回服务器返回值等

6.get-ajax.phtml //最后根据由服务器取回的数据生成页面元素

相关文件内容:

1.index.php //入口文件

<?phpset_include_path("." . PATH_SEPARATOR ."../library" . PATH_SEPARATOR . get_include_path() . PATH_SEPARATOR . "../application/modules/default/models" . PATH_SEPARATOR . "../application/modules/admin/models");require_once "Zend/Controller/Front.php";require_once "Zend/Controller/Router/Route.php";$ctrl=Zend_Controller_Front::getInstance();$ctrl->addModuleDirectory("../application/modules");$ctrl->throwExceptions(true);$ctrl->dispatch();?>

2.TestDbCon.phhp //数据库连接文件

<?php  require_once "Zend/Db.php";  require_once "Zend/Registry.php";  class TestDbCon{    public static function getTestDbCon(){      $params=array(      "host"=>"localhost",      "username"=>"root",      "password"=>"123456",      "dbname"=>"test"      );      $con=Zend_Db::factory("Pdo_Mysql",$params);      return $con;    }  }?>

3.News.php //抽象出来的数据库表文件

<?php/** * PHP Template. */require_once "Zend/Db/Table/Abstract.php";class News extends Zend_Db_Table_Abstract{  //  protected $_schema="test";    protected $_name="news";    protected $_primary="id";    protected $_sequence=true;}?>

4.TestController.php //控制器

<?php  require_once "Zend/Controller/Action.php";  require_once "Zend/View.php";  require_once "News.php";  require_once "TestDbCon.php";  class TestController extends Zend_Controller_Action{    public function ajaxAction(){      $this->render();    }    public function getAjaxAction(){//      $aaa=$_GET["q"];//      $this->view->sid=$_GET["sid"];      $aaa=$this->_request->getParam("q");      $this->view->sid=$this->_request->getParam("sid");      $conn=TestDbCon::getTestDbCon();      $news_tb=new News(array("db"=>$conn));      $where=$news_tb->getAdapter()->quoteInto("title=?",$aaa);      $this->view->rowSet=$news_tb->fetchAll($where);      $this->render();    }  }?>

5.ajax.phtml //客户操作页面,包含生成XMLHttpRequest对象,发ajax请求,处理请求,取回服务器返回值等

<script type="text/javascript">  var xmlHttp  function showValue(str)  {    xmlHttp=getXmlHttpObject();    if (xmlHttp==null)    {      alert ("您的浏览器不支持AJAX.");      return;    }    var url="/test/get-ajax";    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)    {      document.getElementById("resulte").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;  }</script><form>  请选择一位客户:  <select name="customers" onchange="showValue(this.value)">  <option value="rot">rot</option>  <option value="aaa">aaa</option>  <option value="jesse">jesse</option>  <option value="andle">andle</option>  </select></form><p><div id="resulte"><b>客户信息将在此处列出。</b></div></p>

6.get-ajax.phtml //最后根据由服务器取回的数据生成页面元素

<?php  foreach($this->rowSet as $row){    echo "<div>";    echo "<ul>";    echo "<li>";    echo "id=".$row->id." title=".$row->title." add_time=".$row->add_time;    echo "</li>";    echo "</ul>";    echo "</div>";  } echo $this->sid;?>

更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。