- 浏览: 3424104 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
直接在ocntroller返回:
页面直接接收到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方法加载进来了。
public function ajax(){ $dlist=array("11","22","33"); return new CakeResponse(array('body' => json_encode($dlist), 'status' => 200)); }
页面直接接收到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:
<?php class SitesController extends AppController { public $name = "Sites"; public function ajaxListAll() { if ($this->request->is('ajax')) { //这里怎么判断。可能根据情况,但是我使用这样判断是没问题的。 return new CakeResponse(array('body' => json_encode(array('val' => 'test ok')), 'status' => 200)); } } } ?>
return new CakeResponse(array('body' => json_encode(array('val' => 'test ok')), 'status' => 200));
javascript:
ajaxTest = function(){ $.ajax({ url : '/sites/ajaxListAll', data : { name : "test", shortname : "tst" }, dataType : 'json', success : function(html, textStatus) { alert('Success ' + textStatus + html); }, error : function(xhr, textStatus, errorThrown) { alert('An error occurred! ' + errorThrown); } }); }
方式二:把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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>CakePHP AJAX Demo :: <?php echo $title_for_layout?></title> <?php echo $this->Html->charset(); ?> <?php echo $this->Html->script('jquery-1.7.2.min.js'); ?> </head> <body> <div id="container"> <center><h2>CakePHP AJAX Demo</h2></center> <div id="content"><?php echo $content_for_layout?></div> <?php $options = array( 'inline'=>true, 'cache'=>false, 'safe' =>false ); echo $this->Js->writeBuffer($options); ?> </div> </body> </html>
要注意一定要带上 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
<?php class AjaxtestController extends AppController { var $layout = 'ajaxtest'; //指定视图使用的布局为 ajaxtest var $helpers = array('Html','Js'); //需要用到的视图辅助类 function index(){ } function hello(){ sleep(1); //本地测试时,为了更好地看到效果,模拟延迟状态 $this->layout = 'ajax'; //此方法为 AJAX 动作,所以布局需要使用 hello.ctp } }
Ajaxtest目录并新建index.ctp
D:\work_documents\htdocs\app\View\Ajaxtest\index.ctp
<div id="loading" style="display:none;padding:4px;color:black; background-color:#FAD163;width:100px"><strong>Loading...</strong></div> <div id="view" style="display:none;background-color:#E8EEF7; padding:4px;border:1px solid silver;width:300px"></div> <?php //设置 AJAX 选项 $options = array( 'update' => '#view', 'beforeSend' => "$('#view').hide();$('#loading').show();", 'complete' => "$('#loading').hide();$('#view').show();" ); //使用 AjaxHelper 创建 AJAX 动作链接 echo $this->Js->link('Click here!', '/ajaxtest/hello', $options); ?>
再新建一个hello.ctp,ajax加载的内容
D:\work_documents\htdocs\app\View\Ajaxtest\hello.ctp
<center>Hello, AJAX world!</center>
运行http://localhost/ajaxtest/index ,效果是有个超链接文字是'Click here!',但点击链接,内容即hello.ctp通过ajax方法加载进来了。
发表评论
-
php图片添加文字水印实现代码
2016-03-16 13:13 1132http://my.oschina.net/zyt1978/b ... -
借助phpmailer使用gmail和163邮箱发送邮件
2016-01-16 14:03 4415http://www.solagirl.net/phpmail ... -
PHP 启用Gzip 压缩进行优化
2014-12-02 22:08 1269确定服务器支持gzip compression Use PHP ... -
自定义Access-Control-Allow-Origin策略以解决字体文件跨域权限问题
2014-11-23 22:43 1983http://yuguo.us/weblog/access-c ... -
推荐 7 款类似Google Analytics 的开源程序
2014-11-14 23:30 4174http://www.aips.me/google-analy ... -
piwik安装过程
2014-11-13 23:08 976http://blog.csdn.net/gudaoqianf ... -
使用 PHP 获取并解析 JSON 显示在页面中
2014-11-05 22:44 3444http://www.qianxingzhem.com/pos ... -
PHP获得IP
2014-11-02 15:06 1125<?php function getIP() /* ... -
CakePHP的全局常量及方法
2014-10-28 14:32 1193http://docs.30c.org/cakephp/glo ... -
php日期
2014-10-21 21:04 893http://php.net/manual/zh/functi ... -
PHP生成各种验证码和Ajax验证
2014-10-08 13:47 986http://www.helloweba.com/view-b ... -
计算一段日期内的周末天数的php代码(星期六,星期日总和)
2014-10-07 14:48 2272http://www.jb51.net/article/208 ... -
PHP中出现Notice: Undefined index的三种解决办法
2014-09-14 17:18 2541http://blog.csdn.net/stellaah/a ... -
细说websocket - php篇
2014-07-24 21:04 1218http://www.cnblogs.com/hustskyk ... -
CakePHP log(日志)操作
2013-12-07 23:19 1370http://luzl.iteye.com/blog/6537 ... -
使用PHP缩略图和剪切图
2013-11-28 23:05 1888API: resource imagecreatetrueco ... -
几个jQuery的图片裁剪插件
2013-11-28 21:02 4263http://hi.baidu.com/coffeant/it ... -
提升CakePHP网页应用速度的八大方法
2013-11-26 10:19 1185http://www.21haolou.com/article ... -
PHP URL 重定向 的三种方法
2013-11-26 10:06 1220http://my.oschina.net/qingyi090 ... -
PHP如何实现整除
2013-11-24 00:48 3405http://www.zhixing123.cn/php/27 ...
相关推荐
This is a simple demo of some of the AJAX helpers now available in CAKE. These helpers are directly modeled on Ruby On Rails. In fact, they were shamelessly ported from rails almost verbatim. You can ...
CakePHP框架中实现Ajax传值是通过AJAX (Asynchronous JavaScript and XML) 技术与后端的CakePHP控制器进行数据交换的一种方式。通常在Web开发中,Ajax用于创建更为动态和响应快速的用户界面。当用户与页面上的元素...
Ajax-cakephp-ajax.zip,ajax for cakephp:一个易于处理ajax请求的插件。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不...
CakePHP Ajax插件 一个CakePHP插件,使使用AJAX变得容易。 该分支适用于CakePHP 4.0+ 。 有关详细信息,请参见。 这个插件是做什么用的? 基本上是DRY(不要重复自己)和简单的AJAX处理。 演示版 有关实时演示,...
Cakephp Ajax 验证Cakephp ajax 验证插件要求CakePHP >= 2.0 jQuery >= 1.7安装克隆/复制此目录中的文件到app/Plugin/AjaxValidation 通过调用CakePlugin::load('AjaxValidation');确保插件已加载到app/Config/...
普基斯Ajax 用户管理仪表板演示: : 用户名:superdemo、admindemo、userdemo 密码:demo123 这个项目选择 CakePHP 是因为它提供了一个框架的主要原因,可以帮助我们更快地启动项目。 另一方面,使用 ajax 将加快您...
9. **Ajax支持**:CakePHP 2.4.1版本支持Ajax交互,开发者可以通过AjaxHelper创建异步请求,提升用户体验。 10. **性能优化**:CakePHP提供缓存机制,包括查询缓存、视图缓存和页面碎片缓存,有效提高应用程序的...
通过内置的JS助手和Controller组件,CakePHP 支持AJAX无刷新交互,使Web应用更加动态和响应式。 **国际化(I18n)与本地化(L10n)** CakePHP 1.2 提供了完善的i18n和l10n支持,允许开发者轻松创建多语言应用。 *...
Ajax-Paginacion-Ajax-CakePHP3.zip,实现paginación en ajax usando cakephp3,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分...
12. **AJAX支持**:框架内建支持AJAX,允许创建响应式的用户体验。 13. **视图缓存**:通过视图缓存,可以提高性能,减少不必要的数据库查询。 14. **命名约定**:CakePHP遵循一套严格的命名规则,如CamelCase...
此外,它还支持AJAX集成,可以轻松创建动态交互的用户体验。不仅如此,CakePHP 还提供了一套完整的权限控制机制(Acl),帮助开发者轻松实现用户角色和权限管理,这对于大型网站或应用的运营至关重要。 总的来说,...
这个名为"CakePHP插件-将Ajax聊天添加到您的应用程序"的资源是为开发者提供了一种集成实时聊天功能的方式,使他们能够在自己的CakePHP应用中轻松实现用户间的交互。 Ajax(Asynchronous JavaScript and XML)是一种...
视图支持Ajax 内置校验框架 提供应用程序的基础模块和CRUD 代码自动生成功能 提供处理session,request,security的组件 灵活的视图缓存功能 面向对象 无需配置:只要安装好数据库 兼容PHP4和PHP5。 CakePHP ...
主要特性:基于MVC架构视图支持Ajax内置校验框架提供应用程序的基础模块和CRUD 代码自动生成功能提供处理session,request,security的组件灵活的视图缓存功能面向对象无需配置:只要安装好数据库兼容PHP4和PHP5。
视图支持Ajax 内置校验框架 提供应用程序的基础模块和CRUD 代码自动生成功能 提供处理session,request,security的组件 灵活的视图缓存功能 面向对象 无需配置:只要安装好数据库 兼容PHP4和PHP5。 CakePHP ...
CakePHP提供了三种不同的会话存储方式:文件、数据库和Cookie,每种方式都有其独特的优点。 - **文件存储**是最常见的会话存储方式,数据被保存在服务器上的临时文件中。这种方式简单且易于配置,但可能在高负载...
例如,AjaxHelper可以使得在视图中请求Ajax操作变得简单。 3. 回调函数:CakePHP控制器和模型都包含了一些预定义的回调函数,这些回调函数允许开发者在特定的执行点插入自定义逻辑。 - 控制器的回调函数包括...
- **AJAX支持**:通过AjaxHelper,开发者可以轻松实现异步交互,增强用户体验。 - **国际化和本地化**:内置的I18n(国际化)和L10n(本地化)支持,方便应用的多语言开发。 通过对CakePHP 1.3版本的学习和实践,...
此外,CakePHP 1.2 还支持AJAX集成,通过JavaScript和jQuery库,可以实现页面的无刷新更新,提升用户体验。它的模板引擎(View Helper)允许开发者创建可复用的视图元素,使界面设计更灵活。 总结起来,CakePHP 1.2...