2012-04-29 2 views
0

PHP는 케이크 1.1로 API를 개발하고 있습니다. 나는 JSON으로 응답을 쓰고 싶다. PHP Cake 1.2 나 1.3에서는 많은 콘텐츠를 발견했지만 1.1에서는 그렇지 않습니다. 여기 CakePHP 1.1 - 어떻게 JSON 응답을

여기보기 코드는 내 컨트롤러 코드

function index() { 
    $this->layout = 'ajax'; 
    $this->RequestHandler->setContent('json', 'application/json'); 
    $members['id'] = '001100';   
    $this->set(compact('members'));  
} 

입니다

echo json_encode($members);

내 문제는 응답 콘텐츠 형식이 Content-Type: text/html

여전히 어떤 방법이 있나요하다는 것을입니다 I 각 기능에 대한보기를 만들 필요가없고 단지 json으로 작성하십시오.

도와주세요.

감사합니다, 아딜

+0

왜 2.1이 아닌 옵션으로 업그레이드 할 예정입니까? 이 API를 개발하기 시작하면 1.1이 아마도 사용 가능한 최악의 버전 일 것입니다 (그 이후로 특히 많이 개선 된 부분입니다). 업그레이드가 나의 추천 일 것입니다. 또한 "phpcake"가 아닌 "cakephp"입니다. – mark

+0

사실, 내 웹 사이트는 이미 cakephp 1.1에서 개발되었으며 2.1로 업그레이드하는 것이 좋습니다. 하지만 많은 노력이 필요합니다. –

답변

0

내가 질문 100 % 이해하지만 단순히 JSON 문자열 출력 뭔가하려고하는 경우,이 링크를 한 번 봐 걸릴 확실하지 않다 :

http://techno-geeks.org/2009/08/easy-json-with-cakephp-and-jquery/

+0

답장을 보내 주셔서 감사합니다. 내 컨트롤러 코드는 다음과 같습니다 function index() { \t \t $ this-> layout = 'ajax'; \t \t $ this-> RequestHandler-> setContent ('json', 'application/json'); \t \t $ 회원 [ 'id'] = '001100'; \t \t $ this-> set (compact ('members')); \t \t 여기에보기 코드입니다. 내 문제는 응답 내용 유형이 여전히 Content-Type입니다. text/html –

0

그냥 시도해보십시오.

function index() { 
    $this->autoRender = false; 
    /** 
    * leave this two lines 
    * 
    * $this->layout = 'ajax'; // leave it 
    * $this->RequestHandler->setContent('json', 'application/json'); 
    * 
    */ 

    // your process to get $members 
    $members['id'] = '001100';   
    $this->set('members');  
} 

보기 코드가 훌륭합니다.

1

CakePHP 1.2에서는 autoRender를 false로 설정하고 컨트롤러 동작에서 값을 반환하면 바로 출력됩니다. 아마도 Content-Type을 특정해야 할 것입니다.

function index() { 
    $this->autoRender = false; 
    $this->RequestHandler->respondAs('json'); // or $this->RequestHandler->respondAs('application/json'); if json is not set up with CakePHP 1.1 
    $members['id'] = '001100';   
    return json_encode($members);  
} 

내가 CakePHP의 1.1 코드베이스에 즉시 액세스 할 수없는, 그래서 당신의 _invoke() 메소드는, 작업의 반환이 있는지 확인하려면 dispatcher.php을 확인 특별히해야 할 수도 있습니다 autoRender가 false로 설정된 경우 에코됩니다.

json 응답을 제공하는 데 사용할 수있는 JsonView가 포함 된 CakePHP 2.1로 업그레이드하는 것이 좋습니다.

function index() { 
    $this->view = 'Json'; 
    $members['id'] = '001100'; 
    $this->set(compact('members'));   
    $this->set('_serialize', array('members'));  
} 
+0

좋은 해결책입니다.이 기능은보기의 필요성을 없앰으로써 많은 도움이됩니다. – Bearwulf

관련 문제