`

cakephp jquery ajax json

阅读更多
简介

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返回的数据,而不用做任何转换.
分享到:
评论

相关推荐

    CakePHP使用ajax传值

    CakePHP框架中实现Ajax传值是通过AJAX (Asynchronous JavaScript and XML) 技术与后端的CakePHP控制器进行数据交换的一种方式。通常在Web开发中,Ajax用于创建更为动态和响应快速的用户界面。当用户与页面上的元素...

    Ajax-cakephp-ajax.zip

    Ajax-cakephp-ajax.zip,ajax for cakephp:一个易于处理ajax请求的插件。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不...

    cakephp-ajax:用于CakePHP的AJAX:用于简化处理AJAX请求的插件

    CakePHP Ajax插件 一个CakePHP插件,使使用AJAX变得容易。 该分支适用于CakePHP 4.0+ 。 有关详细信息,请参见。 这个插件是做什么用的? 基本上是DRY(不要重复自己)和简单的AJAX处理。 演示版 有关实时演示,...

    CakePHP :: Ajax Demo

    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-validation:Cakephp ajax 验证插件

    Cakephp Ajax 验证Cakephp ajax 验证插件要求CakePHP &gt;= 2.0 jQuery &gt;= 1.7安装克隆/复制此目录中的文件到app/Plugin/AjaxValidation 通过调用CakePlugin::load('AjaxValidation');确保插件已加载到app/Config/...

    CakePHP-Serializers:一种将 CakePHP 响应序列化为 JSON 并相应地将 JSON 反序列化为 CakePHP 数据数组的解决方案,主要围绕使用 Ember 和 Ember Data 构建 REST API 设计

    CakePHP 序列化程序 一种将 CakePHP 响应序列化为 JSON 并相应地将 JSON 反序列化为 CakePHP 数据数组的解决方案,主要围绕使用 Ember 和 Ember Data 构建 REST API 设计。 该插件旨在匹配和以对 CakePHP 生成的响应...

    passbolt_api:Passbolt CE后端,一个用Cakephp编写的JSON API

    Passbolt CE后端,名为"passbolt_api",是一个基于 CakePHP 框架构建的JSON API服务,专为Passbolt Content Management System (CMS) 提供核心功能。Passbolt是一款开源密码管理工具,旨在帮助团队安全地存储和共享...

    Ajax-Paginacion-Ajax-CakePHP3.zip

    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插件.zip

    cakephp-jwt-auth, 使用JSON网络令牌进行身份验证的CakePHP插件 CakePHP认证插件 包含AuthComponent类认证的插件,用于使用 JSON网络令牌进行身份验证。 你可以在这里详细阅读关于JSON网络令牌规范的详细说明。要求...

    cakephp-jsonapi:用于在CakePHP 3.x REST API中构建标准化JSON响应的库集

    cakephp-jsonapi 用于在CakePHP 3.x REST API中构建标准化JSON响应的库集为什么? 我需要一种一致的方法来从我的API控制器获取REST响应。 此外,Controller需要执行一些基本的设置步骤才能正确处理JSON请求/响应。 ...

    CakePHP 1.2 API 中文文档

    通过内置的JS助手和Controller组件,CakePHP 支持AJAX无刷新交互,使Web应用更加动态和响应式。 **国际化(I18n)与本地化(L10n)** CakePHP 1.2 提供了完善的i18n和l10n支持,允许开发者轻松创建多语言应用。 *...

    Passbolt CE Backend,一个用Cakephp编写的JSON API-PHP开发

    ____ __ ____ / __ \ ____ _____ ____ / / _ ____ / / / _ / / _ / / __`/ ___ / ___ / __ \ / __ \ / / __ / / ____ / / _ /(__ | __)/ _ / / / _ / / / / _ / _ / \ __,_ / ____ / ____ / _,___ / \ ____ / _ ...

    CakePHP插件-将Ajax聊天添加到您的应用程序_PHP_下载.zip

    4. **JavaScript/jQuery库**:用于实现Ajax通信,监听用户输入,发送请求,接收并更新聊天界面。 5. **CSS样式表**:定义聊天界面的样式和布局,使其看起来专业且用户友好。 安装和使用这个插件通常涉及以下步骤: ...

    cakephp-cakephp-1.3.8-0-g33afe21

    7. **Ajax 支持**:了解如何结合 jQuery 或其他 JavaScript 库,利用 CakePHP 的 JSON 或 XML 响应进行异步请求。 8. **错误处理和日志**:掌握如何设置和处理错误,以及记录应用的日志信息。 9. **烤箱烤制测试**...

    cakephp--使用_CakePHP_的_Session_和_Request_Handler_组件

    对于AJAX请求,组件可以自动检测并返回JSON或XML格式的数据,简化了前端和后端之间的数据交互。而对于RSS Feed,通过判断请求类型,可以在控制器中生成相应的RSS XML文档,提供给订阅者最新的更新信息。 #### 结论 ...

    CakePHP 3.4 开发手册文档 CakePHP Cookbook Documentation Release 3.4

    - **配置**:新的配置方式更加灵活,支持多种存储格式如 YAML 和 JSON。 - **新 ORM**:3.4 版本引入了一个全新的 ORM 层,提高了数据操作的效率和便捷性。 #### 调试与性能优化 - **调试**:CakePHP 提供了一系列...

    angular-cakephp-auth:用于向 CakePHP 服务器发出 REST JSON 请求的 Angular JS 应用程序的基于令牌的身份验证

    这是一个 CakePHP 插件和一个 Angular JS 应用程序,它通过令牌为从 CakePHP 获取 JSON 的 Angular 应用程序实现身份验证 虽然此代码是为 CakePHP 编写的,但您也可以将相同的 angular 代码用于其他服务器框架 主要...

    PHP的框架之CakePHP-CakePHP教程

    打包下载,里面有CakePHP的框架源码,下载后可直接使用,版本是1.1的,稳定版;CakePHP的分页组件源码;CakePHP的中文及英文教程,CHM格式;CakePHP的中文打印版教程,WORD格式,下载后可直接打印,方便的;CakePHP...

    CakePHP依赖

    在 CakePHP 项目中,`composer.json` 文件会声明对 CakePHP 框架本身和其他相关扩展或插件的依赖。例如: ```json { "name": "cakephp/app", "description": "CakePHP skeleton app", "type": "project", ...

    cakephp php-framework

    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 ...

Global site tag (gtag.js) - Google Analytics