cakePHPのajaxですが、javascriptはいいとして、コントローラー側をどう実装するのか気になる方は多いでしょう。
cakeの画面は基本的にコントローラーにアクセスした後は通常はビューに遷移します。
ajaxの場合、当然ビューが必要ないのでこれらの設定をしなければいけません。
これは非常に簡単で$this->autoRender = FALSE;と入力してあげればOKです。
下記がソースです。
JavaScript側
1 2 3 4 5 6 7 8 |
$.ajax({ type : "POST", url : http:/localhost/aaaa/sampleController/method1", data : postObj,//普通のオブジェクトです。このままモデルに入力する予定 success : function(res) { window.location.reload(); } }); |
cakeのコントローラー側
1 2 3 4 5 6 7 8 9 10 11 12 |
public function method(){ $this->autoRender = FALSE;//ここでviewの遷移を打ち切ります。 if($this->request->is('ajax')){//ajaxであることの確認 $data = $this->request->data;//request->dataのなかにそのまま入っています。 //field名→値の配列をそのままsaveメソッドに投げてあげればそのまま保存できます。 if ($this->モデル->save ( $data )) { echo "success"; }else{ echo "fail"; } } } |
下記が参考リンクです。