本文实例讲述了ZendFramework框架中实现Ajax的方法。分享给大家供大家参考,具体如下:开发
本文实例讲述了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" 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
框架
Ajax