简介
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。Cakephp1.2提供了对JSON的内置支持,主要体现在两个特殊的方法:
Router::parseExtensions() 和 JavascriptHelper::object()
目标
我们要通过JQuery的$.getJSON方法,获取Cakephp服务端的JSON数据,URL可能是这个样子
1.http://localhost/posts/index.json
如何完成?
首先,要让Cakephp启用JSON的扩展名解析
编辑/config/routes.php,添加
1.Router::parseExtensions(’json’);
然后,为JSON设置Content-type
编辑app_controller.php,添加
var $components = array('RequestHandler');
function beforeFilter() {
$this->RequestHandler->setContent('json', 'text/x-json');
parent::beforeFilter();
}
RequestHandler的setContent方法,可以使json的扩展名使用特定的layout和视图,就像下面的代码
下面,为你的JSON数据创建一个layout
创建/layouts/json/default.ctp的代码
<?php
header("Pragma: no-cache");
header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");
header('Content-Type: text/x-json');
header("X-JSON: ".$content_for_layout);
echo $content_for_layout;
?>
注意:
在使用RequestHandler的setContent方法后,Cakephp会自动解析json扩展名的访问并且会默认使用
/layouts/json/default.ctp解析json,如果不存在这个layout的话,会出现 未找到layout 错误.
x-json头可以被prototype.js将返回的数据自动解析为JSON对象
下面创建我们的JSON视图
创建/views/posts/json/index.ctp的代码 (注意加粗的部分)
< ?php
echo $javascript->object($aPosts);
?>
同样的json也有自己的视图文件,简单理解就是,在你的控制器视图下的json文件夹,建立同名的视图文件.
控制器中的代码
function index() {
Configure::write('debug',0); //不加这一句 jquery获取 json数据时 无法获取 默认的debug页面会破坏json的数据结构,切记一定要加上
$this->set('aPosts', $this->Post->findAll());
}
在JQuery中使用
假如我们的返回值类似下面这样
Array
(
[0] => Array
(
[Post] => Array
(
[id] => 1
[user_id] => 54
[subject] => augue scelerisque mollis.
[body] => tristique senectus et netus et malesuada fames ac turpis egestas. Fusce aliquet magna
[created] => 2009-10-29 21:15:51
)
)
[1] => Array
(
[Post] => Array
(
[id] => 2
[user_id] => 81
[subject] => purus, in molestie tortor nibh
[body] => elit. Nulla facilisi. Sed neque. Sed eget lacus. Mauris non dui nec urna suscipit nonummy.
[created] => 2009-08-01 06:57:03
)
)
)
我们可以这样使用JSON数据
$.getJSON("http://localhost/posts/index.json", function(json){
alert(json[0].Post.subject);
alert(json[1].Post.subject);
});
可以看到,我们可以直接使用由json返回的数据,而不用做任何转换.
分享到:
相关推荐
cakphp关于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处理。 演示版 有关实时演示,...
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 验证Cakephp ajax 验证插件要求CakePHP >= 2.0 jQuery >= 1.7安装克隆/复制此目录中的文件到app/Plugin/AjaxValidation 通过调用CakePlugin::load('AjaxValidation');确保插件已加载到app/Config/...
passbolt_api:Passbolt CE后端,一个用Cakephp编写的JSON API-源码
CakePHP 序列化程序 一种将 CakePHP 响应序列化为 JSON 并相应地将 JSON 反序列化为 CakePHP 数据数组的解决方案,主要围绕使用 Ember 和 Ember Data 构建 REST API 设计。 该插件旨在匹配和以对 CakePHP 生成的响应...
Ajax-Paginacion-Ajax-CakePHP3.zip,实现paginación en ajax usando cakephp3,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分...
cakephp-jwt-auth, 使用JSON网络令牌进行身份验证的CakePHP插件 CakePHP认证插件 包含AuthComponent类认证的插件,用于使用 JSON网络令牌进行身份验证。 你可以在这里详细阅读关于JSON网络令牌规范的详细说明。要求...
cakephp-jsonapi 用于在CakePHP 3.x REST API中构建标准化JSON响应的库集为什么? 我需要一种一致的方法来从我的API控制器获取REST响应。 此外,Controller需要执行一些基本的设置步骤才能正确处理JSON请求/响应。 ...
____ __ ____ / __ \ ____ _____ ____ / / _ ____ / / / _ / / _ / / __`/ ___ / ___ / __ \ / __ \ / / __ / / ____ / / _ /(__ | __)/ _ / / / _ / / / / _ / _ / \ __,_ / ____ / ____ / _,___ / \ ____ / _ ...
这是一个 CakePHP 插件和一个 Angular JS 应用程序,它通过令牌为从 CakePHP 获取 JSON 的 Angular 应用程序实现身份验证 虽然此代码是为 CakePHP 编写的,但您也可以将相同的 angular 代码用于其他服务器框架 主要...
打包下载,里面有CakePHP的框架源码,下载后可直接使用,版本是1.1的,稳定版;CakePHP的分页组件源码;CakePHP的中文及英文教程,CHM格式;CakePHP的中文打印版教程,WORD格式,下载后可直接打印,方便的;CakePHP...
There are two main ways to get a fresh copy of CakePHP. You can either download an archive copy (zip/tar.gz/tar.bz2) from the main website, or check out the code from the git repository. To download ...
视图支持Ajax 内置校验框架 提供应用程序的基础模块和CRUD 代码自动生成功能 提供处理session,request,security的组件 灵活的视图缓存功能 面向对象 无需配置:只要安装好数据库 兼容PHP4和PHP5。 CakePHP ...
视图支持Ajax 内置校验框架 提供应用程序的基础模块和CRUD 代码自动生成功能 提供处理session,request,security的组件 灵活的视图缓存功能 面向对象 无需配置:只要安装好数据库 兼容PHP4和PHP5。 CakePHP ...
打包下载,里面有CakePHP的框架源码,下载后可直接使用,版本是1.1的,稳定版;CakePHP的分页组件源码;CakePHP的中文及英文教程,CHM格式;CakePHP的中文打印版教程,WORD格式,下载后可直接打印,方便的;CakePHP...
CakePHP插件-将Ajax聊天添加到您的应用程序_PHP_下载.zip
Lead you from a basic setup of CakePHP to building a couple applications that will highlight CakePHPs functionality and capabilities without delving too deeply into the PHP language, but rather ...
主要特性:基于MVC架构视图支持Ajax内置校验框架提供应用程序的基础模块和CRUD 代码自动生成功能提供处理session,request,security的组件灵活的视图缓存功能面向对象无需配置:只要安装好数据库兼容PHP4和PHP5。