2017-01-11 4 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이되도록 세 번째 매개 변수를 업데이트 할 수 있으니 정상적으로 작동합니다.

컨트롤러 컨텍스트에서