我想产生一个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
答案 0 :(得分:2)
请尝试这个。 withStringBody
仅接受字符串。
// If you want a json response
return $this->response->withType('application/json')
->withStringBody(json_encode(['result' => 'filter_removed']));
CakePHP More Info