我正在使用新的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');
然后视图应该是过时的,但是当我调用它时,它仍然会提供一个指向缺少视图的页面。
答案 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';
此致 詹姆斯