昨天,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”链接,你会发现该行记录被成功删除!