cakephp - 避免在 CakePHP 中为每个 AJAX 函数创建 View

标签 cakephp cakephp-2.0 cakephp-2.2 cakephp-2.3

我试图避免为我在 Controller 上使用的每个 AJAX 函数创建 View 。 (因为我不以任何方式操作结果数据,并且在大多数情况下只是一个 bool 值)

我在 Controller 中使用 RequestHandler 组件:

var $components = array('RequestHandler');

我将其添加到routes.php

Router::parseExtensions('json');

我正在尝试使此函数正常工作,但我得到一个 null 值:

public function test(){
    $this->layout = 'ajax';

    $result = '1';
    $this->set('_serialize', $result);
}

要访问该函数的 json 版本,我在 .json 中使用此 URL 来避免加载任何 View :

http://localhost/cakephp/demoController/test.json

我一直遵循 CakePHP 文档中的步骤: http://book.cakephp.org/2.0/en/views/json-and-xml-views.html#json-and-xml-views

我做错了什么?为什么我没有得到预期的结果,而是得到 null

另外,如果我尝试序列化某个数组,例如这个:

$result = array('demo' => '1');
$this->set('_serialize', $result);

我收到此通知:

Notice (8): Undefined index: 1 [CORE\Cake\View\JsonView.php, line 89]Code Context                $data = array();                 foreach ($serialize as $key) {                     $data[$key] = $this->viewVars[$key];$view = null $layout = null $serialize = array( 'demo' => '1' ) $data = array() $key = '1'JsonView::render() - CORE\Cake\View\JsonView.php, line 89 Controller::render() - CORE\Cake\Controller\Controller.php, line 957 Dispatcher::_invoke() - CORE\Cake\Routing\Dispatcher.php, line 193 Dispatcher::dispatch() - CORE\Cake\Routing\Dispatcher.php, line 161 require - APP\webroot\index.php, line 92 [main] - ROOT\index.php, line 42{"1":null}

最佳答案

据我了解文档,您必须指定一个 View 变量,然后在使用 _serialize 键时引用该变量。这意味着您的代码片段将如下所示:

$result = '1';
$this->set('theResult', $result);
$this->set('_serialize', array('theResult'));

关于cakephp - 避免在 CakePHP 中为每个 AJAX 函数创建 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13803277/

相关文章:

php - CakePHP 单元测试只工作一次,然后我必须重置数据库

CakePHP 配置文件

mysql - 查找 ('first' )、查找 ('count' ) 或字段 ('id' )...哪个更快?

javascript - 如何在 Cakephp 2.3 中将变量传递给 javascript?

php - Cake PHP 中的自定义分页

php - 如何使用 PHPDoc 符号声明局部变量的类型?

php - 使用cakephp获取名称以显示在下拉列表中

sql - cakephp 新项目通知系统

php - cakephp-2.0 最简单的 ajax 链接与 jshelper

php - 在数据源默认值中找不到模型的 cakephp 表