オウンドメディア成功の秘訣は「ロジカル×エモーショナル」。必要な戦略と事例を大公開!【PLAN-B×LIG共催セミナー】
オウンドメディア成功の秘訣は「ロジカル×エモーショナル」。必要な戦略と事例を大公開!【PLAN-B×LIG共催セミナー】
2008.04.15

CakePHPでAjaxを使うときのメモ

づや

どーせすぐに忘れちゃうからメモ代わりに書いておく。

prototype.jsを使用している時限定。

単純に読み込み無しでPHPを走らせたい場合はこんな感じに書く。

var a = new Ajax.Request(URLを書く,{""method": "get"とか指定したいオプションを書く"},false);

あとは好きなように使える。

今日はCakePHPのAjaxヘルパーのlinkを使ってみた。

viewにはこんな感じで指定

link('リンクの文字','コントローラーのURL/メソッド名',array(お好みで指定)); ?>

コントローラにそれを受け取るメソッドがあればリンクの文字が押されたときに呼ばれるようになる

// ヘルパーにAjaxを追加しておく
// $ajax->link()が使えるように
var $helpers = array('Html', 'Form','Ajax');

funstion メソッド(){
    $this->layout = "ajax";//こいつを指定してあげる
    // 処理
    exit;
}

呼ばれたときに、描画したりしない場合はこれでいける。

イベント後に一部を書き換えたりしたい場合はviewでこう書く

link('リンクの文字','コントローラーのURL/メソッド名',array('update'=>'書換えたい要素のID')); ?>
<div></div>

コントローラでrenderしてやると、viewで指定したid要素の中に書き出される

funstion メソッド(){
    $this->layout = "ajax";//こいつを指定してあげる
    // 処理
    $this->render('書き出したい要素のview');
}

これで処理が終わると、指定した要素にviewが書き出される。

※layout をajaxにしてあげないと、layout 毎書き出されてしまう。
※デバッグログを出してる場合はログも出てしまう。