CakePHP 2.x不生成json响应

CakePHP 2.x不生成json响应,php,json,cakephp,cakephp-2.0,Php,Json,Cakephp,Cakephp 2.0,我有一个蛋糕2.x应用程序。我需要从PHP数组中提供一个JSON编码的响应,但它没有按预期工作 在app/Config/routes.php中,我有Router::parseExtensions('json') 在我的控制器中,我有以下代码: public function ajaxTags() { $this->loadModel('Tag'); $tags = $this->Tag->find('list'); var_dump($tags);

我有一个蛋糕2.x应用程序。我需要从PHP数组中提供一个JSON编码的响应,但它没有按预期工作

app/Config/routes.php
中,我有
Router::parseExtensions('json')

在我的控制器中,我有以下代码:

public function ajaxTags()
{
    $this->loadModel('Tag');
    $tags = $this->Tag->find('list');
    var_dump($tags);
    die;
}
这就产生了我所期望的——我的
'tags'
数据库表中的一个PHP数据数组,例如

array(4) { 
    [1]=> string(14) "United Kingdom"
    [2]=> string(6) "France"
    [3]=> string(7) ... 
}
所以我想做的就是把它作为JSON编码的数据。我已经按照办公室的指示做了

因此,在我的
TagsController.php的顶部,我有:

public $components = array('RequestHandler');
然后我尝试使用文档中所述的
\u serialize
输出它。我不需要“视图”,因为我不想做任何其他格式:

public function ajaxTags()
{
    $this->loadModel('Tag');
    $tags = $this->Tag->find('list');
    $this->set('_serialize', array($tags));
}
这就产生了以下反应:

null

响应数据编码为
内容类型:application/json;charset=UTF-8
(我可以在浏览器的“网络”选项卡中看到这一点)

我哪里做错了?我知道
$tags
中有数据,因为我
var\u dump
'。为什么现在输出为空?

根据,您的操作应如下所示:

public function ajaxTags()
{
    $this->loadModel('Tag');
    $tags = $this->Tag->find('list');
    $this->set('tags', $tags);
    $this->set('_serialize', array('tags'));
}
_serialize键是一个特殊的视图变量,它指示 使用数据视图时,应序列化其他视图变量


您需要将变量
$tags
发送到视图,以便
\u serialize
键能够识别并呈现该变量。

尝试放置以替换
$this->set(''u serialize',array($tags))通过
$this->set('tags',$tags)$此->设置(“序列化”,数组(“标记”)@SamHecquet是的,可以。但是为什么呢?谢谢。我编辑了我的答案来解释为什么需要设置这个变量