CakePHP 2.x不生成json响应
我有一个蛋糕2.x应用程序。我需要从PHP数组中提供一个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);
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是的,可以。但是为什么呢?谢谢。我编辑了我的答案来解释为什么需要设置这个变量