【问题标题】:CakePhp is returning HTML and BODY tags along with the json?CakePhp 与 json 一起返回 HTML 和 BODY 标签?
【发布时间】:2017-01-09 10:31:21
【问题描述】:

我试图返回普通的旧 JSON,但由于某种原因它被这样返回:

<html>
   <body>
       {
          "token":"MTEyLSQyeSQxMCRHVS9nS2t2QVRVcGpJWjJGVERldXouWWJFTzgyZ0lCTURBZFIvdWs2RldGNm1IeWxxNGpTUw==",
          "user":{
              "id":112,
              "username":"admin",
              "firstName":"admin",
              "lastName":"admin",
           },
           "userType":{
              "id":1,
              "name":"admin"
           }
       }
   </body>
</html>

我目前正在使用 CakePHP 发送响应:

/**
 * @param $controller \App\Controller\AppController
 */
public function respond($controller) {
    $controller->response->header('Content-Type: application/json');
    $controller->response->statusCode($this->statusCode);
    $controller->response->body(json_encode($this->messages));
}

但我也尝试过使用纯 PHP:

echo json_encode($this->messages);
die();

HTML 标签对我的前端来说不是问题,它们似乎被 javascript 忽略了。但是出于某种原因,TestNG 正在获取 HTML 标记并使响应不可解析。

有什么想法吗?

【问题讨论】:

  • echo json_encode($this-&gt;messages); die(); 的结果是什么?
  • 完全一样的东西。 @谢里夫
  • 您能发布您的完整控制器功能吗?
  • 这就是整个函数,不过我添加了函数声明。
  • 您使用的是什么版本的 CakePHP,您不使用 Json View 是否有原因?

标签: php cakephp testng cakephp-3.2


【解决方案1】:

使用此代码获取 Json 响应:

public function respond($controller) {
    $controller->autoRender = false;
    $this->response->type('json');
    $controller->response->statusCode($this->statusCode);
    $controller->response->body(json_encode($this->messages));
}

参考。 Sending correct JSON content type for CakePHP

【讨论】:

    猜你喜欢
    • 2018-02-13
    • 1970-01-01
    • 2011-12-11
    • 2012-08-14
    • 2016-02-13
    • 2023-03-28
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    相关资源
    最近更新 更多