2017-01-11 13 views
3

Мой метод управления Foo() (который вызван через запрос AJAX) печатает JSON на странице, используя json_encode($data). Я пытаюсь сопровождать правильные заголовки HTTP с помощьюSilverStripe как вернуть заголовки JSON

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

Но из моих инструментов разработки браузера я прочитал ответ AJAX:

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

Я предполагаю, что заголовки JSON не отправляются правильно , Это правильный способ отправки заголовков JSON?

ответ

6

Из контекста контроллера, вы бы добавить этот заголовок так:

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

Если вы делаете это из-за пределов контроллера, то вам нужно создать новый объект SS_HTTPResponse и вернуть его с дополнительным заголовком , как указано выше. Here's an examplesilverstripe/graphql делает это (в модуле SilverStripe 4).

+0

Yup this сделал! – Faloude

1

Faloude в прошлом я сделал return SS_HTTPRequest::send_file($file, $fileName, 'Content-Type: text/csv'); для возврата csv-файлов с заголовком. Я предполагаю, что вы можете обновить третий параметр, чтобы он был application/json, и он должен работать нормально.