本文实例讲述了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
/**
* 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 //控制器
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=$_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请求,处理请求,取回服务器返回值等
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
{
// 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程序设计有所帮助。