【问题标题】:SilverStripe how to return JSON headersSilverStripe 如何返回 JSON 标头
【发布时间】:2017-01-11 19:05:01
【问题描述】:

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

header('Content-Type: application/json');

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

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

我假设 JSON 标头未正确发送。这是发送 JSON 标头的正确方法吗?

【问题讨论】:

    标签: json http-headers silverstripe


    【解决方案1】:

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

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

    如果您是从控制器外部执行此操作,那么您需要创建一个新的SS_HTTPResponse 对象并将其与添加的标头一起返回,如上所述。 Here's an example of silverstripe/graphql 这样做(在 SilverStripe 4 模块中)。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-23
        • 1970-01-01
        • 1970-01-01
        • 2021-10-05
        • 1970-01-01
        相关资源
        最近更新 更多