0

I am developing API with PHP cake 1.1. I want to write response as JSON. I found a lot of content for PHP Cake 1.2 or 1.3 but not for 1.1.

Here is my controller code

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

here is view code

echo json_encode($members);

My problem is that, response content type is still Content-Type: text/html

Is there any way that I do not have to create view for each function and just write json.

Please help me out.

Thanks, Adil

4

3 に答える 3

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 のコード ベースにすぐにアクセスできないので、dispatcher.php、特に _invoke() メソッドをチェックして、autoRender がfalse に設定します。

json 応答を提供するために使用できる JsonView を含む CakePHP 2.1 へのアップグレードを強くお勧めします。

function index() {
    $this->view = 'Json';
    $members['id'] = '001100';
    $this->set(compact('members'));        
    $this->set('_serialize', array('members'));    
}
于 2012-05-03T06:45:20.370 に答える
0

質問を100%理解できるかどうかはわかりませんが、JSON文字列で何かを出力しようとしているだけの場合は、次のリンクを参照してください。

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

于 2012-04-29T11:27:55.817 に答える
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');    
}

あなたのビューコードは問題ありません。

于 2012-04-30T08:23:45.310 に答える