使用 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”链接,你会发现该行记录被成功删除!
补充说明:
“$this->render(’knownusers’,’ajax’);//使用render将数据返回给视图 ”
替代写法为:
$this->setAction(’knownusers’);//使用setAction将数据返回给视图
