CakePHP:ajax方式
页面直接接收到josn格式字符串。
方式一:普通的Ajax方式
参考:http://stackoverflow.com/questions/12458235/how-to-send-ajax-response-to-jquery-from-cakephp
Request and Response objects http://book.cakephp.org/2.0/en/controllers/request-response.html
CakePHP2 Request请求对象 http://www.ruiwant.com/cakephp-request-object-tutorial-basic.html
Controller:
return new CakeResponse(array(‘body’ => json_encode(array(‘val’ => ‘test ok’)), ‘status’ => 200));
javascript:
方式二:把ajax得到的内容替换掉dom的某部分
参考:http://www.cnblogs.com/mafeifan/p/3170603.html
CakePHP中的ajax还是比较简单,但要注意一些细节。
app/View/Layouts下新建ajaxtest.ctp
D:\work_documents\htdocs\app\View\Layouts\ajaxtest.ctp
要注意一定要带上 echo $this->Js->writeBuffer($options); 即输出js。
有关writeBuffer(),自己从官方文档翻译的
php:method:: writeBuffer($options = array())
将所有产生的Javascript写入到代码块中或缓存在文件中,并返回一个带链接的脚本
**选项**
– inline – (默认为真)若为真,直接在页面内输出缓存内容,若cache同样为真,将只产生一个带地址的script标签
– cache – (默认为假)若为真,将缓存内容保存到一个独立的js文件中,并被页面引用(译者:建议缓存内容过多时使用)
– clear – (默认为真)若为假,将阻止缓存内容被清除
– onDomReady – (默认为真)若为真,将缓存内容放到domready事件中(译者:即脚本被自动包含在$(document).ready(function ())中)
– safe – (默认为真)若为真,页面内的缓存内容被<![CDATA[ … ]]>语句块包裹
独立出来的js缓存文件在webroot/js,要保证该目录可写,并且保证浏览器可以生成任何页面的脚本资源缓存
AjaxtestController.php
D:\work_documents\htdocs\app\Controller\AjaxtestController.php
Ajaxtest目录并新建index.ctp
D:\work_documents\htdocs\app\View\Ajaxtest\index.ctp
再新建一个hello.ctp,ajax加载的内容
D:\work_documents\htdocs\app\View\Ajaxtest\hello.ctp
运行http://localhost/ajaxtest/index ,效果是有个超链接文字是’Click here!’,但点击链接,内容即hello.ctp通过ajax方法加载进来了。
