昨天,David和Jack捣腾了半天,终于实现了CakePHP中使用AJAX删除用户记录,现将我们的经验总结后,与大家分享!
使用 AjaxHelper 之前, 你必须下载来自www.prototypejs.org 和 http://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>
第三步:操作结果界面!
点“delete”链接,你会发现该行记录被成功删除!
本文介绍如何在CakePHP中实现AJAX删除用户记录功能,包括配置JavaScript库、控制器方法及视图更新等步骤。
412





