2017-01-11 5 views
3

コントローラメソッドFoo()(AJAXリクエストを通じて呼び出される)は、json_encode($data)を使用してJSONをページに印刷します。正しく送信されていないSilverStripe JSONヘッダーを返す方法

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

私はJSONヘッダを仮定している:私はAJAXの応答を読ん

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

を使用してしかし、私のブラウザの開発ツールから正しいHTTPヘッダに同行しようとしています。これはJSONヘッダーを送信する正しい方法ですか?

答えて

6

コントローラコンテキストから、あなたはそのように、このヘッダを追加します。

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

あなたはコントローラの外部からそれをやっているなら、あなたは新しいSS_HTTPResponseオブジェクトを作成して、コメントを追加ヘッダとそれを返す必要があります、 上記のように。 Here's an examplesilverstripe/graphql(これはSilverStripe 4モジュール内で行います)。

+0

これがこれでした! – Faloude

1

Faloude以前は、ヘッダ付きのcsvファイルを返すためにreturn SS_HTTPRequest::send_file($file, $fileName, 'Content-Type: text/csv');を行っていました。私はあなたがapplication/jsonになるように3番目のパラメータを更新することができますとうまく動作するはずですね。

関連する問題