Hatena::ブログ(Diary)

cake bake diary

2011年08月25日

pjax.js試してみた

| 13:26 | pjax.js試してみたを含むブックマーク pjax.js試してみたのブックマークコメント

no title

参考:

pjax こそが pushState + Ajax の本命 - punitan (a.k.a. punytan) のメモ

no title

以下嵌ったこと。

最新のcommitに不具合

30261537以降だとエラー*1が出るのでce941969を使う。

herokuにあるやつでもOK。

このサンプルいいなあ。

テストはサーバーサイドも実装してから

とりあえず遷移の動きだけ見ようと思って適当なページを読みこませようとしたらなぜか普通にページ遷移してしまうので

なんでかなーと思ったら$.ajax()後のsuccessコールバック内に↓が。。。

if ( !$.trim(data) || /<html/i.test(data) )
    return window.location = options.url

htmlタグを含むページを返したらダメ。

CakePHPでの実装

pjaxから読み込まれた時は"X-PJAX"がリクエストヘッダに入るのでこれを見て出力を変えればいいらしい。

でもprototypeとかjqueryでAjaxする時はデフォルトで"X-Requested-With"が入ってくるので、普通に

if ($this->RequestHandler->isAjax()) {
    $this->RequestHandler->renderAs($this, 'ajax');
}

とかだけでいい気がする。

*1:beforeSendとかのコールバック内でスコープに無い変数を参照してた

トラックバック - http://d.hatena.ne.jp/gapao/20110825/1314246392