我试图避免为我在控制器中使用的每个AJAX函数创建一个视图。(因为我不以任何方式操纵结果数据,在大多数情况下只是一个布尔值)
我在我的控制器中使用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,以避免加载任何视图。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);
我收到了这个通知: 注意 (8): 未定义索引: 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}请注意,上述内容包含HTML标记,但不需要进行解释。
serialize
方法的重点在哪里?难道这个方法不应该是为了避免使用视图吗?文档说:如果您不需要在将数据转换为json/xml之前进行任何自定义格式化,则可以跳过为控制器操作定义视图文件。
- Alvaro