SilverStripe 如何 return JSON headers

SilverStripe how to return JSON headers

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

来伴随正确的 http headers
header('Content-Type: application/json');

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

Content-Type:text/html; charset=utf-8

我假设 JSON headers 发送不正确。这是发送 JSON headers 的正确方法吗?

Faloude 过去我已经 return SS_HTTPRequest::send_file($file, $fileName, 'Content-Type: text/csv'); 使用 header 返回 csv 文件。我猜你可以将第三个参数更新为 application/json,它应该可以正常工作。

在 Controller 上下文中,您可以像这样添加 header:

$this->getResponse()->addHeader('Content-type', 'application/json');

如果您是从 Controller 外部执行此操作,那么您需要创建一个新的 SS_HTTPResponse object 和 return 它并添加 header,如上所述. silverstripe/graphql 中的 Here's an example 正在执行此操作(在 SilverStripe 4 模块中)。