本文主要和大家介绍了Zend Framework框架中实现Ajax的方法,结合实例形式详细分析了Zend Framework框架中实现ajax功能的具体步骤与相关操作技巧,希望能帮助到大家。
开发平台:Windows XP SP2
测试平台:FreeBSD 7.0
开发工具:Netbeans 6.1
使用框架:Zend Framework 1.5.2
数据库: MySQL 5.0.51a
所需的数据库表和ZF相关目录以及文件:
一、表:
1 2 3 4 5 6 7 8 9 10 11 12 | 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 //入口文件
1 2 3 4 5 6 7 8 9 | <?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 //数据库连接文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?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 //抽象出来的数据库表文件
1 2 3 4 5 6 7 8 9 10 11 12 | <?php
require_once 'Zend/Db/Table/Abstract.php';
class News extends Zend_Db_Table_Abstract{
protected $_name ='news';
protected $_primary ='id';
protected $_sequence =true;
}
?>
|
登录后复制
4.TestController.php //控制器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <?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 = $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请求,处理请求,取回服务器返回值等
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | <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
{
xmlHttp= new XMLHttpRequest();
}
catch (e)
{
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>
<p id= "resulte" ><b>客户信息将在此处列出。</b></p>
</p>
|
登录后复制
6.get-ajax.phtml //最后根据由服务器取回的数据生成页面元素
1 2 3 4 5 6 7 8 9 10 11 12 | <?php
foreach ( $this ->rowSet as $row ){
echo "<p>" ;
echo "<ul>" ;
echo "<li>" ;
echo "id=" . $row ->id. " title=" . $row ->title. " add_time=" . $row ->add_time;
echo "</li>" ;
echo "</ul>" ;
echo "</p>" ;
}
echo $this ->sid;
?>
|
登录后复制
相关推荐:
Zend Framework数据库操作技巧总结
Zend Framework基于Command命令行建立ZF项目的方法
Zend Framework常用校验器详解
以上是Zend Framework框架中如何实现Ajax的详细内容。更多信息请关注PHP中文网其他相关文章!