在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 //入口文件
<?php

set_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" οnchange="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;

?>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值