SilverStripe如何返回JSON标头

Fal*_*ude 3 json silverstripe http-headers

我的控制器方法Foo()(通过AJAX请求调用)使用打印JSON到页面json_encode($data).我正在尝试使用正确的http标头

header('Content-Type: application/json');
Run Code Online (Sandbox Code Playgroud)

但是从我的浏览器开发工具中我读到了AJAX响应:

Content-Type:text/html; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

我假设没有正确发送JSON标头.这是发送JSON标头的正确方法吗?

Rob*_*ill 7

从Controller上下文中,您可以像这样添加此标头:

$this->getResponse()->addHeader('Content-type', 'application/json');
Run Code Online (Sandbox Code Playgroud)

如果您是从Controller外部进行的,那么您需要创建一个新SS_HTTPResponse对象并使用添加的标头返回它,如上所述.下面是一个例子silverstripe/graphql这样做(在SilverStripe 4模块).