最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用pjax實(shí)現(xiàn)無刷新更改頁面url

 更新時(shí)間:2015年02月05日 09:03:55   投稿:hebedich  
pjax=pushState+ajax,相信用過github的同學(xué)都知道,github部分頁面采用了pjax這個(gè)項(xiàng)目來實(shí)現(xiàn)ajax無刷新加載的同時(shí)改變頁面url。一起來學(xué)習(xí)一下這個(gè)插件吧。

我們都知道ajax給瀏覽器帶來了異步加載的能力,在數(shù)據(jù)校驗(yàn)、局部刷新等方面提升了用戶體驗(yàn),但同時(shí)存在如下問題:

1. 可以無刷新改變頁面內(nèi)容,但無法改變頁面URL
2. hash的方式不能很好的處理瀏覽器的前進(jìn)、后退等問題

為了解決傳統(tǒng)ajax帶來的問題,HTML5里加強(qiáng)了history API,加入了pushState、replaceState接口和popstate事件。這里就不詳細(xì)介紹了,沒有這方面知識的同學(xué)建議先看一下相關(guān)的資料。

pjax插件封裝了pushState和ajax操作,為我們提供了一個(gè)開發(fā)這這類web應(yīng)用的簡單方法,具體步驟如下:

定義需要局部更新的容器

<div id="container"></div>
初始化pjax,監(jiān)聽URL

復(fù)制代碼 代碼如下:

$(function(){
// pjax
$(document).pjax('a', '#container');
$.pjax.reload('#container');
})

后端處理pjax請求

后端的處理邏輯是,首先判斷是不是pjax請求,如果是的話,根據(jù)請求參數(shù)返回局部內(nèi)容,否則返回layout布局,然后由`$.pjax.reload('#container');`發(fā)起pjax請求。根據(jù)以上邏輯可以寫出如下代碼:

復(fù)制代碼 代碼如下:

var pjaxFilter = function(req, res, next) {
if (req.get('X-PJAX')) {
next();
return;
}
//如果不是pjax請求的話直接返回布局模板
res.render('layout', { title: 'Pjax simple demo' });
};
router.get('/', pjaxFilter, function(req, res) {
res.render('index');
});
router.get('/poem/:id', pjaxFilter, function(req, res) {
var poemId = req.params.id;
res.render('poem/' + poemId);
})

完整代碼:pjax-demo

這只是pjax最基礎(chǔ)的功能,pjax提供了豐富的api,請?jiān)L問:jquery-pjax

相關(guān)文章

最新評論

卢湾区| 白水县| 安国市| 泉州市| 龙南县| 枝江市| 永新县| 云安县| 荥阳市| 淮安市| 肃北| 曲沃县| 西藏| 崇仁县| 岳池县| 梅州市| 龙川县| 乐昌市| 东乡| 沙雅县| 攀枝花市| 平顶山市| 四子王旗| 井冈山市| 保亭| 兴文县| 汉沽区| 普洱| 新平| 六安市| 清涧县| 凤台县| 佛冈县| 历史| 克什克腾旗| 连州市| 南通市| 焦作市| 东平县| 远安县| 沭阳县|