5

我正在使用新的 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');

那么视图应该是过时的,但是当我调用它时,它仍然提供一个指向丢失视图的页面。

4

3 回答 3

5

您调用的网址是否以“.json”结尾?

于 2012-03-24T20:50:06.437 回答
2

我对 Cake 希望我明确设置 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')
        ));
    }
于 2012-07-14T19:15:52.110 回答
0

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

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

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

在我的控制器中,我使用了:

$this->viewClass = 'Json';

问候,詹姆斯

于 2012-03-24T14:11:42.630 回答