CakePHPのAjax通信のJSON出力 : CakePHP

Pocket

jQueryを使いAjax通信を行いレスポンスをJSON文字列で出力処理のメモ。

VIEWを描画せずレスポンスをJSONのみ返すメモ。

(1) exitを使う

public function some() {
   .....
   $data = [
       'foo'    => 'bar',
       .....
   ];
   .....
   header( "Content-Type: application/json; charset=utf-8" );
   echo json_encode( $data );
   exit; // --(1)
}

exitがないとJSON文字列を出力した後でViewがレンダリングされAjax通信が失敗する。

(2) autoRenderプロパティにfalseを設定

public function some() {
   .....
   $data = [
       'foo'    => 'bar',
       .....
   ];
   .....
   $this->autoRender = false;
   header( "Content-Type: application/json; charset=utf-8" );
   echo json_encode( $data );
}

(3)viewClassへJSONを指定

public function some() {
   .....
   $data = [
       'foo'    => 'bar',
       .....
   ];
   .....
   $this->viewClass = 'JSON';
   $this->set(compact( 'data'));
   $this->set('_serialize', 'data');
}

Webアプリ開発を加速する CakePHP2定番レシピ119

コメント

No comments yet.

コメントの投稿

改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。