我正在尝试将内容类型更改为Kohana中的application / json。我把它放在我的控制器中的一个动作中:
$this->request->headers('Content-Type', 'application/json');
$this->content = json_encode($json_data);
但请求仍然是text / html内容类型。
我应该在哪里放置$this->request->headers('Content-Type', 'application/json');
?
答案 0 :(得分:10)
详细说明Claudio的答案,是的,你需要设置响应头,而不是请求,如此
$this->response->headers('Content-Type','application/json');
另外,我不确定你是如何实现控制器的,但看起来它可能是基于
的模板控制器$this->content = json_encode($json_data);
如果您使用的是模板控制器,请确保将auto_render设置为FALSE。
最后,使用您的json数据
设置响应正文$this->response->body(json_encode($json_data));
答案 1 :(得分:1)
答案 2 :(得分:1)
OP问到哪里放。如果您正在使用扩展Controller_Template的控制器,就像我一样,我只是将Andrew Schmid的代码示例添加到我的基本控制器的after()方法(在parent :: after()之前)并且它运行良好。
所以:
Controller_Your_Controller extends Controller_Template {
// Your controller actions
public function after()
{
// Set the response content-type here
$this->response->headers('Content-Type','application/json');
parent::after();
}
}