2012-03-24 77 views
5

我使用的是新的CakePHP的2.1,并想用JsonView让我的控制器来响应的jQuery在客户端创建一个AJAX请求。CakePHP的2.1 JsonView

然而,这应自动与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

请注意,您不需要设置'应用/明确json'。 – 2012-10-04 14:39:56

回答

5

你是否正在呼吁“以.json”端的网址是什么?

+1

这确实使其中的差别!谢谢。 有点奇怪的是,以.json为此,需要在支持URL重写的搜索引擎优化... – 2012-03-26 20:39:20

+2

没有问题的框架。但这当然是一件好事。所以你完全知道你的页面调用什么是ajax调用,哪些不是(例如在awstats或类似的)。 为了不会在将来遇到这样的问题,试着看看蛋糕的核心代码。继从得到的框架,直到被倾倒瓦尔或反射类获取在控制器中的动作的请求向您展示了很多关于框架本身。 ;) 但你可以再问一次,也; P – func0der 2012-03-27 18:28:37

0

您是否添加了“RequestHandlerComponent”到控制器的组件列表吗?

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

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

在我控制我用:

$this->viewClass = 'Json'; 

问候, 詹姆斯

+0

可能的工作,但我正在寻找与JsonView“易”解决方案,答案下面让一个额外的观点已经过时... – 2012-03-26 20:41:11

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') 
     )); 
    }