CakePHP中使用AJAX

字体大小: 中小 标准 ->行高大小: 标准

      使用 AjaxHelper 之前, 你必须下载来自www.prototypejs.orghttp://script.aculo.us 的最新版本的 JavaScript  库。并将解压后的src文件夹以及prototype.js文件,放置在目录“\cake\app\webroot\js”中。

      第一步:控制器部分!

      首先,要在controller中,需要引入 Ajax 和 Javascript helpers,引入RequestHandler组件:

1.class UsersController extends AppController{
2.    var $name = 'Users';
3.    var $helpers = array('Html','Form','Ajax','Javascript');     //助手
4.    var $components = array('Session','Email','RequestHandler'); //组件

      控制器方法部分代码:

1.function knownusers(){
2.    $this->set('knownusers',$this->User->find('all', array('id', 'username', 'email'), 'id DESC')); 
3.  
4.}

01.function delete($id=null){
02.         $this->layout = 'ajax';
03.         Configure::write('debug',0);
04.        if($id){
05.            if($this->RequestHandler->isAjax()){//判断是否是ajax请求
06.                $this->User->del($id);
07.                $this->set('knownusers',$this->User->find('all', array('id', 'username'), 'id DESC'));
08.                $this->render('knownusers','ajax');//使用render将数据返回给视图
09.            }else{
10.                $this->redirect(array('action'=>'knownusers'),null,true);
11.            }
12.        }else{
13.            $this->Session->setFlash('重试');
14.            $this->redirect(array('action'=>'knownusers'),null,true);
15.        }
16.    }

      第二步:视图部分。

01.<html>
02.<head><title>$title_for_layout</title>
03.<?php
04.if ( isset($javascript) ) {//在视图中引js文件
05.    echo $javascript->link('prototype.js');  //在视图中引js文件
06.    echo $javascript->link('scriptaculous.js?load=effects');
07.    echo $javascript->link('controls.js');
08.}
09.?>
10.</head> 
11.  
12.<div id="knownusers">
13.    <table>
14.    <tr>
15.        <th>id</th>
16.        <th>username</th>
17.        <th class="actions">Actions</th>
18.    </tr>
19.    <?php 
20.  
21.        $i = 0;
22.        foreach ($knownusers as $user):
23.    ?>
24.        <tr>
25.            <td>
26.                <?php echo $user['User']['id'] ?>
27.            </td>
28.            <td>
29.                <?php echo $user['User']['username'] ?>
30.            </td>
31.            <td>
32.            <?php
33.            if ( isset($ajax) ) {
34.                echo $ajax->link('delete', array('action' => 'delete',$user['User']['id']), array( 'update' => 'knownusers' )); //在删除操作上,使用ajax方式发送请求!
35.            }
36.            ?>
37.            </td>
38.        </tr>
39.    <?php endforeach; ?>
40.    </table>
41.</div>

      第三步:操作结果界面!

2009-4-30 10-35-08

点“delete”链接,你会发现该行记录被成功删除!

补充说明:
“$this->render(’knownusers’,’ajax’);//使用render将数据返回给视图 ”
替代写法为:
$this->setAction(’knownusers’);//使用setAction将数据返回给视图

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/499.html