如何在CakePHP 3.x中发送JSON响应

时间:2018-07-04 08:40:56

标签: php cakephp cakephp-3.0

我想产生一个JSON响应。我在控制器方法中尝试了以下方法:

public function removeFilter($id = null)
{
    $this->autoRender = false;

    header('Content-Type: application/json');
    echo json_encode(['result' => 'filter_removed']);
}

然后按照CakePHP3.4: How to send a json object response?的说明进行操作:

public function removeFilter($id = null)
{
    $this->autoRender = false;

    return $this->response
    ->withType('application/json')
    ->withStringBody(['result' => 'filter_removed']);
}

这两个参数的响应标题均为Content-Type: text/html; charset=UTF-8。没有与此Controller方法关联的模板,这就是autoRender = false的原因。

这是怎么了?

CakePHP 3.5.13

1 个答案:

答案 0 :(得分:2)

请尝试这个。 withStringBody仅接受字符串。

// If you want a json response
return $this->response->withType('application/json')
    ->withStringBody(json_encode(['result' => 'filter_removed']));

CakePHP More Info