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');
}
No comments yet.
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。