Zend Framework框架中实现Ajax的方法示例


Posted in PHP onJune 27, 2017

本文实例讲述了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 |
+----+-------+---------------------+

二、目录:

Zend Framework框架中实现Ajax的方法示例

三、相关文件:

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" 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 Framework框架的PHP程序设计有所帮助。

PHP 相关文章推荐
使用Apache的rewrite技术
Jun 22 PHP
PHP的面试题集
Nov 19 PHP
什么是MVC,好东西啊
May 03 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
Oct 12 PHP
CodeIgniter框架URL路由总结
Sep 03 PHP
使用纯php代码实现页面伪静态的方法
Jul 25 PHP
twig模板获取全局变量的方法
Feb 05 PHP
简单的自定义php模板引擎
Aug 26 PHP
PHP实现的方程求解示例分析
Nov 11 PHP
Laravel使用RabbitMQ的方法示例
Jun 18 PHP
thinkphp5框架路由原理与用法详解
Feb 11 PHP
让whoops帮我们告别ThinkPHP6的异常页面
Mar 02 PHP
PHP用continue跳过本次循环中剩余代码的注意点
Jun 27 #PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 #PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 #PHP
简单谈谈PHP面向对象之标识对象
Jun 27 #PHP
什么是PHP文件?如何打开PHP文件?
Jun 27 #PHP
PHP面向对象之工作单元(实例讲解)
Jun 26 #PHP
thinkphp框架page类与bootstrap分页(美化)
Jun 25 #PHP
You might like
PHP内核介绍及扩展开发指南―基础知识
2011/09/11 PHP
如何判断php数组的维度
2013/06/10 PHP
PHP file_get_contents设置超时处理方法
2013/09/30 PHP
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
Laravel中日期时间处理包Carbon的简单使用
2017/09/21 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
canvas实现环形进度条效果
2017/03/23 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
剖析Python的Twisted框架的核心特性
2016/05/25 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
深入理解Django中内置的用户认证
2017/10/06 Python
使用python爬取B站千万级数据
2018/06/08 Python
Django restframework 源码分析之认证详解
2019/02/22 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
tensorflow多维张量计算实例
2020/02/11 Python
Python做图像处理及视频音频文件分离和合成功能
2020/11/24 Python
Html5实现二维码扫描并解析
2016/01/20 HTML / CSS
家佳咖啡店创业计划书
2013/12/27 职场文书
拾金不昧的表扬信
2014/01/16 职场文书
致跳高运动员加油稿
2014/02/12 职场文书
yy司仪主持词
2014/03/22 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
行政处罚听证告知书
2015/07/01 职场文书
诚实守信主题班会
2015/08/13 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
spring boot实现文件上传
2022/08/14 Java/Android