在Zend Framework 中实现Ajax

来源:互联网 发布:get请求 数据体 编辑:程序博客网 时间:2024/04/29 13:51

开发平台: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;?>

原创粉丝点击