pjaxメモ timeoutの対応

Bookmark this on Google Bookmarks
LINEで送る
Pocket

pjaxを実行したときにレスポンスが悪いとtimeoutしてしまう。firebugでステータスを確認してみるとAbortedと表示されている。
ソースを見たらタイムアウトまでの時間がデフォルトで650msになっていた。かなり短い。
変更したいときは下記のようにする。

$("a.js-pjax").pjax("#pjax", {"timeout": 30000});

直接$.pjaxを実行しているときは下記のようにする。

$.pjax({
    timeout: 30000,
    url: pjax_url,
    container: '#pjax'
});

参考
mojoでpjaxを導入してみた with Text::Xslate
http://mizuki-r.hatenablog.com/entry/2012/02/12/150724

また、特殊な例で、
直接$.pjaxを実行していてるときはreturn false;を書いておかないとaタグをクリックしたのが有効になり遷移してしまう。
最初、aタグ内にonClickを使いreturn false;を書いていたが
iPhoneやiPod touchなどのモバイル用Safariでは認識されず遷移してしまった。
素直に下記のように$.pjaxのあとに書くとよい。

$.pjax({
    timeout: 30000,
    url: pjax_url,
    container: '#pjax'
});
return false;

pjax参考リンク
pjax こそが pushState + Ajax の本命
http://d.hatena.ne.jp/punitan/20110404/1301895279

pjaxが便利過ぎて鼻血出そうになった(railsのサンプル付き)
http://d.hatena.ne.jp/yuku_t/20110823/1314111340

PHPでpjaxる
http://blog.5v-gnd.net/archives/904

defunkt / jquery-pjax
https://github.com/defunkt/jquery-pjax