pjaxの実装

pjaxの使用例を見てみましょう。ぽぽぽーんをクリックしてみてください。そのあと、URLは どうなるでしょうか?

ぽぽぽーん

ajaxで取得した内容と、遷移後の内容が異なってるのは意図としてます。

サーバ側は、pythonのflask

# 主要なところだけ
@app.route('/pjax') #/flask/pjax
def pjax():
        if "X-PJAX" in request.headers:
                print "x-pjax"
                time.sleep(1.5)     #1.5秒停止 spin.gifを見せたいため
                return """<pre>
                      , ,― 、
                    //-―   ヽ   x-pjaxでゲソゲソ
                    ヽ' ノノ、ノヽ)
                    | (!|゚ ヮ゚ノl
                    / ⊂j Viつ、
                    <,<, <_。_。> 、>
                        tbtb
                </pre>"""
        else:
                print "not x-pjax"
                return """<pre>
                      , ,― 、
                    //-―   ヽ   not x-pjaxでゲソゲソ
                    ヽ' ノノ、ノヽ)
                    | (!|゚ ヮ゚ノl
                    / ⊂j Viつ、
                    <,<, <_。_。> 、>
                        tbtb
                </p>"""

クライアント側

<div id="loader" style='display:none'><img src="/bf634817.spin.gif"></div>
<a id="pjaxcontent" href="/flask/tech/pjax"/>ぽぽぽーん</a>
<div id="foo"></div>

<script type="text/javascript">
$('document').ready(function(){ 
  // タイムアウトは、ミリ秒。
  // タイムアウトを越えた場合、遷移する。 
  $("#pjaxcontent").pjax("#foo", {timeout: 3000});
  // spin.gifの設定
  $("#foo").bind('pjax:start', function(){ $("#loader").show()})
           .bind('pjax:end',   function(){ $("#loader").hide()})
});
</script>

参考

« nginxとflaskでSCRIPT_NAMEを解決

business card from moo »

blog comments powered by Disqus

Categories

Uncategorized (rss) (2) | blogofile (rss) (2) | designpettern (rss) (3) | flask (rss) (2) | fluxflex (rss) (3) | java (rss) (6) | nginx (rss) (6) | python (rss) (8) | sacloud (rss) (3) | spdy (rss) (2) | thistownneedsguns (rss) (2) | webService (rss) (2) | zabbix (rss) (3) | さくらVPS (rss) (4) | 芸術は爆発しろ (rss) (3) |