CakePHP3 JSON调用上的模板文件错误路径

问题描述

我刚刚将ajax调用转换为返回json而不是HTML。

如果我

  • 手动或通过邮递员提出请求,我得到了预期的结果。
  • 使用ajax从我的网站致电时出现错误
  • 使用devtools / Network在新标签页中打开,我得到了预期的结果。

为什么蛋糕的处理方式不同?

为什么要在模板路径中添加额外的/ json?

code: 500
file: "Forms/json/json/get_more.ctp"
line: 1092
message: "Template file "Forms/json/json/get_more.ctp" is missing."
url: "/forms/getMore/60498/0/6?_=1599996955252"

在URL中添加.json没有区别。

我已经添加到routes.PHP $routes->extensions(['json','xml','html']);

我需要使用模板才能使我的助手处理一些数据,所以我有$this->set('_serialize',false);

解决方法

确保您已在routes.php中添加了代码

$routes->extensions(['json']);

函数内部

Router::scope('/',function (RouteBuilder $routes) {

现在,在控制器中,假设$ responseArray是您要在json中获得的响应,则必须在操作结束时编写以下行。

$this->set('responseRoot',$responseArray);
$this->set('_serialize',array('responseRoot'));

删除ctp文件,.json类型请求不需要它们,除非您想要特定的格式类型。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...