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 相关文章推荐
PHP 增加了对 .ZIP 文件的读取功能
Oct 09 PHP
php 函数使用方法与函数定义方法
May 09 PHP
理解php Hash函数,增强密码安全
Feb 25 PHP
php xml常用函数的集合(比较详细)
Jun 06 PHP
PHP实现利用MySQL保存session的方法
Aug 23 PHP
php有效防止同一用户多次登录
Nov 19 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
Mar 10 PHP
PHP7+Nginx的配置与安装教程详解
May 10 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
浅析PHP类的反射来实现依赖注入过程
Feb 06 PHP
PHP中使用CURL发送get/post请求上传图片批处理功能
Oct 15 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
德劲1103二次变频版的打磨
2021/03/02 无线电
php在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
php中利用explode函数分割字符串到数组
2014/02/08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
jquery 回车事件实现代码
2011/08/23 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
2017/08/23 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
详解Webpack+Babel+React开发环境的搭建的方法步骤
2018/01/09 Javascript
深入理解令牌认证机制(token)
2019/08/22 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
[01:45]亚洲邀请赛互动指南虚拟物品介绍
2015/01/30 DOTA
python网络编程实例简析
2014/09/26 Python
go语言计算两个时间的时间差方法
2015/03/13 Python
python异常和文件处理机制详解
2016/07/19 Python
Python之reload流程实例代码解析
2018/01/29 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
Django 对IP访问频率进行限制的例子
2019/08/30 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
python中remove函数的踩坑记录
2021/01/04 Python
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
致跳高运动员广播稿
2014/01/13 职场文书
运动会开幕式解说词
2014/02/05 职场文书
2014年销售工作总结与计划
2014/12/01 职场文书
迎新生晚会主持词
2015/06/30 职场文书
元宵节晚会主持词
2015/07/01 职场文书
大学生军训心得体会5篇
2019/08/15 职场文书
如何用JavaScipt测网速
2021/05/09 Javascript