工作站要做一個類似百度雲盤的項目,其中提到了pajx技術,之前從來沒接觸過這個玩意,今天小試牛刀。去網上找了一些教程,只能說百度相當不靠譜,找到的東西幾乎都不能用,還是GitHub好,么么噠!https://github.com/defunkt/jquery-pjax!
Pjax是ajax的升級版,怎么理解呢,當初學習ajax的時候講了ajax的優缺點,其中一個缺點是破壞了瀏覽器的前進后退,因為ajax的請求不會留在歷史記錄中。pjax就不一樣了,pjax被解釋成ajax+pushState的封裝,因為它把ajax的請求寫入歷史記錄,並反映在地址欄,這樣用戶就能愉快地使用前進后退了。pjax有好幾個實現方法,這里使用最常用的Jquery庫,使用jquery.pjax.js。演示代碼的服務器端使用PHP腳本語言。
Pjax用在那兒?就說百度雲盤吧,這個大家肯定都用過。百度雲盤PC端,在點擊打開某個文件夾后會打開這個文件夾下的文件,其實顯示文件的這個div就用到了pjax技術。地址欄變換,內容更換,但是卻是一個ajax請求。等到后退的時候,不必重新請求上一層文件夾的內容,因為是存在在歷史記錄中的。而且,開發者還可以選擇時候使用cache和storage緩存。
DEMO1:
客戶端:
<!DOCTYPE html> <html> <head> <title>pjax</title> <meta charset="utf-8"> </head> <body> <h1>My Site</h1> <div> Go to <a href="res1.php">第一頁</a>.<a href="res2.php">第二頁</a> </div> <div id="container"></div> </body> <script src="../jquery-2.1.4.min.js"></script> <script src="../jquery.pjax.js"></script> <script type="text/javascript"> $(document).pjax('a', '#container') </script> </html>
服務器端:
res1.php
<?php echo "<div style='background:red;'>第一頁</div>";
res2.php
<?php echo "<div style='background:red;'>第二頁</div>";
解釋:$(document).pjax('a', '#container')其中a是觸發元素,#container是裝載pjax返回內容的容器,下面也是這樣。
DEMO2:
客戶端:
<!DOCTYPE html> <html> <head> <title>pjax</title> <meta charset="utf-8"> </head> <body> <h1>My Site</h1> <div> <input type="button" id="th" value="GO"> </div> <div id="container"></div> </body> <script src="../jquery-2.1.4.min.js"></script> <script src="../jquery.pjax.js"></script> <script type="text/javascript"> $(function(){ $('#th').click(function(){ $.pjax({ url: './res3.php', container: '#container' }); }); }); </script> </html>
服務器端代碼:
res3.php:
<?php echo "<div style='background:red;'>第三頁</div>";
恩啊,就是這樣!
