CakePHP 2.1 JsonView

时间:2012-03-24 13:37:51

标签: php ajax json cakephp cakephp-2.1

我正在使用新的CakePHP 2.1,并希望使用JsonView使我的控制器响应客户端jQuery创建的AJAX请求。

但是,这应该根据文档使用JsonView自动完成。

http://book.cakephp.org/2.0/en/views/json-and-xml-views.html

我在routes.php文件中添加了这一行

Router::parseExtensions('json');

在我的控制器中我有

$this->RequestHandler->setContent('json', 'application/json' ); 
$bookings = $this->Bookings->find('all');

$this->set('bookings', $bookings);  
$this->set('_serialize', 'bookings');

然后视图应该是过时的,但是当我调用它时,它仍然会提供一个指向缺少视图的页面。

3 个答案:

答案 0 :(得分:5)

你打电话的网址是否以'.json'结尾?

答案 1 :(得分:2)

我遇到了一些想让我明确设置json视图的问题。默认情况下,XML视图加载正常,而不是json。

我在API函数中执行了以下操作:

    if($this->RequestHandler->ext == 'json') {
        $this->autoRender = false;
        echo json_encode($results);
    } else if($this->RequestHandler->ext == 'xml') {
        $this->set(array(
            'results' => $results,
            '_serialize' => array('results')
        ));
    }

答案 2 :(得分:0)

您是否已将“RequestHandlerComponent”添加到控制器的组件列表中?

我走了另一条路线并创建了一个JSON视图: /app/View/Model/json/view.ctp

<?php
echo json_encode(array(
'success' => TRUE
));

在我的控制器中,我用过:

$this->viewClass = 'Json';

此致 詹姆斯