Cakephp 3:Json呈现视图不工作
我一直在尝试在CakePHP3.0.11中设置一个Ajax调用。 我按照这里的解释: 在路由中启用Json(但我不确定这是否有用): 我已经在控制器中设置了示例:Cakephp 3:Json呈现视图不工作,php,ajax,json,cakephp,Php,Ajax,Json,Cakephp,我一直在尝试在CakePHP3.0.11中设置一个Ajax调用。 我按照这里的解释: 在路由中启用Json(但我不确定这是否有用): 我已经在控制器中设置了示例: $returnObject = new ObjectReturn(); $this->set('returnObject', $returnObject); $this->set('_serialize', ['returnObject']); 但当我调用ajax时,我得到了: { "message": "Tem
$returnObject = new ObjectReturn();
$this->set('returnObject', $returnObject);
$this->set('_serialize', ['returnObject']);
但当我调用ajax时,我得到了:
{
"message": "Template file \Pages\\score.ctp\ is missing.",
"url": "\/pages\/score",
"code": 500
}
如果我创建了页面,他只会呈现一些html,并将default.ctp作为布局。这里怎么了
非常感谢 如果您想强制每个响应(错误除外)都使用JSON(并跳过模板),可以将此代码放在AppController.php中
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler');
}
public function beforeRender(Event $event)
{
$this->RequestHandler->renderAs($this, 'json');
$this->response->type('application/json');
$this->set('_serialize', true);
}
这将加载RequestHandlerComponent,强制呈现为JSON,强制响应类型为JSON,并使用模板跳过
手册中的更多内容:要在cakephp 3应用程序中实现json/xml呈现视图,需要在应用程序中编辑两个文件
public function initialize() {
parent::initialize();
$this->loadComponent('RequestHandler');/*This line loads the required RequestHandler Component*/
}
Router::scope('/', function ($routes) {
$routes->extensions(['json', 'xml', 'ajax']);
/*Other route definitions as already existing*/
}
public function initialize() {
parent::initialize();
$this->loadComponent('RequestHandler');/*This line loads the required RequestHandler Component*/
}
Router::scope('/', function ($routes) {
$routes->extensions(['json', 'xml', 'ajax']);
/*Other route definitions as already existing*/
}
现在可以通过向通常加载html的链接添加.json或.xml来加载json视图
干杯您是否按照说明在控制器中加载了
RequestHandlerComponent
?和b.t.w,要使用扩展名和请求处理启用json
查看,您的url需要使用.json
扩展名,例如/pages/score.json
。您好,谢谢您的回答。我已经升级到Cake的最新版本,现在它可以工作了。也许一个错误是正确的。谢谢你的回答!由于以下原因,当您升级时,这一点起作用:从3.1.0 AppController开始,在应用程序框架中自动将“\u serialize”=>true添加到所有XML/JSON请求中。如果要使用查看文件,需要从beforeRender回调中删除此代码。
非常感谢!!我疯狂地想要输出json!!似乎是设置$this->set(“\u serialize',$vars)代码>是不够的!!提示:同样适用于CakePHP2!