成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

[經(jīng)驗總結(jié)]pushState+ajax應用

Tony / 2088人閱讀

摘要:在即將度過試用期的時候,借著今天學習的文章,整理一下前段時間做用戶主頁時用到的。近期我站的個人主頁改版,將用戶發(fā)布的各類作品放到一個頁面上切換,附加篩選功能。在做篩選及翻頁的過程中,我們用到了。

在即將度過試用期的時候,借著今天學習的文章,整理一下前段時間做用戶主頁時用到的pjax。

近期我站的個人主頁改版,將用戶發(fā)布的各類作品放到一個頁面上切換,附加篩選功能。
在做篩選及翻頁的過程中,我們用到了pjax。即通過ajax獲取數(shù)據(jù),然后改變url鏈接,這樣用戶可以前進后退。就像這樣→

上面的二級導航就是篩選用噠~

這個就是翻頁。

翻頁是由php直接渲染的,所以里面的鏈接也是php回傳的。在篩選之后ajax回傳數(shù)據(jù)里面,也帶了翻頁的數(shù)據(jù),就可以直接添到里面。因為pushState和replaceState不能很好的兼容低版本IE,這里我們用了jquery.history插件,在使用pushState或replaceState的時候觸發(fā) "statechange"事件。

因為ajax參數(shù)是作為a標簽的鏈接形式寫入翻頁里,所以在翻頁時需要將參數(shù)提取出來:

$(".pager").on("click", "a", function(e) {
    e.preventDefault();
    var href = $(this).attr("href");
    if (!href) {
        return;
    };

    if ($(this).closest(".pager").hasClass("ajaxPage")) {
        changeState(href);
    } else {
        window.location.href = href;
    };
                
});

先阻止a標簽的跳轉(zhuǎn),然后取出鏈接。這里有一處判斷是否是ajax頁,因為頁面交互涉及到其他頁面跳轉(zhuǎn)過來的情況,所以ajaxPage作為判斷[請忽略。。。

接下來就是使用pushState:

var changeState = function changeState(href) {
    var parmas;
    var href = href;
    //取出參數(shù)(使用插件)
    href = href.substring(href.indexOf("?"));
    parmas = $.query.parseNew(href).get();
    var subParmas = {
       /* state對象 */
    };
    var subHref;       
    /* 
    各種判斷處理
    subHref為url要與后臺約定
    */
    History.pushState(subParmas, $("title").text(), subHref);
};

然后等到pushState的時候會觸發(fā)"statechange",我們再根據(jù)參數(shù)ajax取數(shù)據(jù),最后呈現(xiàn)出來:

//當頁面url更新時更新數(shù)據(jù)
History.Adapter ? History.Adapter.bind(window,"statechange",function(){
    var parmas = History.getState().data,
    $.when($.get(ajaxlink, parmas)).done(function(result) {
        /* 
        各種呈現(xiàn)處理 
        */         
    });
}) : "";

得益于pushState和replaceState的出現(xiàn),以及jquery.history插件,這幾行代碼就可以有pjax效果。
嘛~~更多有關于pjax的應用,可以閱讀學習淺析Web開發(fā)中前端路由實現(xiàn)的幾種方式

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/78308.html

相關文章

  • Ajax局部頁面刷新和History API結(jié)合的陷阱

    摘要:對于那些老網(wǎng)站或者老項目來說全盤改造成并不現(xiàn)實,于是就有了局部頁面刷新這個解決方案。如果不知道局部頁面刷新是何物請看這里,這里和這里。但實際上,第一次后退無法還原的內(nèi)容陷阱,第二次后退頁面刷新了一切恢復最初的樣子。 ajax在現(xiàn)代網(wǎng)站已經(jīng)得到非常普遍地應用,主要的好處大家都知道(異步加載數(shù)據(jù),不用刷新整個瀏覽器,更小的數(shù)據(jù)傳輸尺寸)。對于那些老網(wǎng)站或者老項目來說全盤改造成ajax并不現(xiàn)...

    JasinYip 評論0 收藏0
  • HTML5 history API,創(chuàng)造更好的瀏覽體驗

    摘要:而唯一不引發(fā)刷新的參數(shù)并不會發(fā)送到服務器,因此服務器無法獲得狀態(tài)。目前建議設置為空字符串。此外請注意,及本身調(diào)用時是不觸發(fā)事件的。我認為,按照漸進增強的思路,這樣就是最好的了,也就是只使用較少的代碼優(yōu)化高級瀏覽器的使用體驗。 HTML5 history API有什么用呢? 從Ajax翻頁的問題說起 請想象你正在看一個視頻下面的評論,在翻到十幾頁的時候,你發(fā)現(xiàn)一個寫得稍長,但非常有趣的評...

    zgbgx 評論0 收藏0
  • SPA那點事

    摘要:單頁面應用的出現(xiàn)依然存在著爭議性,我們該如何看待他的兩面性呢接下來小生給大家總結(jié)一下他的優(yōu)缺點。單頁面應用的優(yōu)勢無刷新體驗沒有了令人詬病的頁面頻繁刷新,同時節(jié)約瀏覽器資源,路由響應比較及時,提升了用戶的體驗。 前端猿一天不學習就沒飯吃了,后端猿三天不學習仍舊有白米飯擺于桌前。IT行業(yè)的快速發(fā)展一直在推動著前端技術棧在不斷地更新?lián)Q代,前端的發(fā)展成了互聯(lián)網(wǎng)時代的一個縮影。而單頁面應用的發(fā)展...

    PumpkinDylan 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<