0

我刚刚将 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"

将 .json 添加到 URL 没有任何区别。

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

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

4

1 回答 1

0

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

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

函数内部

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

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

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

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

于 2020-10-08T14:30:17.597 回答