使用pagination分頁插件實現(xiàn)Ajax動態(tài)分頁

pagination插件下載地址:https://pan.baidu.com/s/1c3QQ7XQ

一、前言

  做的一個列表頁要將所有結(jié)果顯示出來,太多記錄不能一次性顯示,所以要進行分頁。一開始嘗試自己寫,但功能不完整(不會做太多頁碼的時候隱藏部分頁碼用省略號代替),于是找了這個插件來用。

二、使用方法

我們先來看看這款插件基本的使用方法:

1.先引入JQ和JS,引入CSS(樣式可以自行修改)

<script src="script/lib/jquery.min.js"></script>  
<script src="script/jquery.pagination.js"></script>  
<link rel="stylesheet" href="style/common.css">  
<link rel="stylesheet" href="style/pagination.css">  
  1. HTML代碼
<div class="M-box"></div>  

3.JS代碼

<script>  
    $(function () {  
        $('.M-box').pagination({  
            pageCount:50,  
            jump:true,  
            coping:true,  
            homePage:'首頁',  
            endPage:'末頁',  
            prevContent:'上頁',  
            nextContent:'下頁'  
        });  
    })  
  
</script>  

現(xiàn)在你可以看到這樣的效果:

image
image

一共有50頁,可以輸入數(shù)字并跳轉(zhuǎn)到那一頁,有首頁、末頁、上頁、下頁這些按鈕

對應(yīng)回我上面的代碼就會發(fā)現(xiàn)這些都是我設(shè)置的,怎么根據(jù)自己的需要來設(shè)置呢,就是這樣的代碼:

$('.M-box').pagination({
//option
//參數(shù):值,
//參數(shù):值
})

參數(shù)如下表:

options(參數(shù)配置)

參數(shù) 默認(rèn)值 說明
pageCount 9 總頁數(shù)
totalData 0 數(shù)據(jù)總條數(shù)
current 1 當(dāng)前第幾頁
showData 0 每頁顯示的條數(shù)
prevCls 'prev' 上一頁class
nextCls 'next' 下一頁class
prevContent '<' 上一頁節(jié)點內(nèi)容
nextContent '>' 下一頁節(jié)點內(nèi)容
activeCls 'active' 當(dāng)前頁選中狀態(tài)class名
count 3 當(dāng)前選中頁前后頁數(shù)
coping false 是否開啟首頁和末頁,值為boolean
isHide false 總頁數(shù)為0或1時隱藏分頁控件
keepShowPN false 是否一直顯示上一頁下一頁
homePage '' 首頁節(jié)點內(nèi)容,默認(rèn)為空
endPage '' 尾頁節(jié)點內(nèi)容,默認(rèn)為空
jump false 是否開啟跳轉(zhuǎn)到指定頁數(shù),值為boolean類型
jumpIptCls 'jump-ipt' 文本框內(nèi)容
jumpBtnCls 'jump-btn' 跳轉(zhuǎn)按鈕class
jumpBtn '跳轉(zhuǎn)' 跳轉(zhuǎn)按鈕文本內(nèi)容
callback function(){} 回調(diào)函數(shù),參數(shù)"index"為當(dāng)前頁

下一步是怎么實現(xiàn)AJAX動態(tài)分頁?

上面那個分頁是寫死的,現(xiàn)在我們要用Ajax動態(tài)加載數(shù)據(jù)進來,所以可以先把原來的注釋掉,我們重新來寫<script></script>里面的內(nèi)容

待會需要用到的是總頁碼,去接口文檔里面找找有沒有:


哈哈找到了!總頁碼就是totalPages

如果沒有總頁碼也沒關(guān)系,看看有沒有當(dāng)前頁的數(shù)據(jù)量和總的數(shù)據(jù)量,我們就可以將總頁碼算出來:
···
//獲取總條數(shù)
var sumCount=data.totalElements;
//獲取返回的條數(shù)
var count=data.numberOfElement;
···

···
//總頁碼(向上取整)
var pageCount=Math.ceil(sumCount/count);
···

現(xiàn)在就可以開始做動態(tài)分頁了

先寫一段JQ的Ajax,你懂的~把總頁數(shù)輸出一下看看有沒有成功

···
<script>
(function () {.ajax({
url:'', //這里寫你的接口地址
type:'POST',
dataType: 'JSON',
data:{
},
success:function(data){ //看能否成功返回數(shù)據(jù),要根據(jù)接口文檔來修改名稱哦
//總頁碼
console.log(data.totalPages);

            }
        })

        
    })

</script>

···

在控制臺可以看到有輸出數(shù)據(jù)的話就可以進行下一步了,將你第一次寫好的pagnation方法放到success里面,只不過pageCount的值原本是寫死的50,現(xiàn)在是用Ajax來動態(tài)獲取到的總頁碼

···
<script>
(function () {.ajax({
url:'',
type:'POST',
dataType: 'JSON',
data:{
},
success:function(data){
//返回條數(shù)
console.log(data.numberOfElements);
//總條數(shù)
console.log(data.totalElements);
//總頁碼
console.log(data.totalPages);

                $('.M-box').pagination({
                    pageCount:data.totalPages,   //總頁碼
                    coping:true,                 //是否開啟首頁和末頁
                    homePage:'首頁',
                    endPage:'末頁',
                    prevContent:'上頁',
                    nextContent:'下頁',
                    current:1,                    //當(dāng)前頁碼
                    callback:function (api) {     //這是一個回調(diào)函數(shù)

                    }
                });
            }
        })
    })

</script>

···
callback:function(api){

}

這是一個回調(diào)函數(shù),即點擊分頁的數(shù)字按鈕時所執(zhí)行的操作,回調(diào)函數(shù)中有一個參數(shù)叫api

api接口

方法 參數(shù) 說明

getPageCount() 無 獲取總頁數(shù)

setPageCount(page) page:頁數(shù) 設(shè)置總頁數(shù)

getCurrent() 無 獲取當(dāng)前頁

filling() 無 填充數(shù)據(jù),參數(shù)為頁數(shù)

看不懂也沒關(guān)系,待會看例子就懂了。

首先我們要清楚原理,這個函數(shù)就是用來放點擊分頁數(shù)字按鈕以后要做什么的。因為沒有這個函數(shù)的時候,我們只獲取了第一頁的數(shù)據(jù),那現(xiàn)在當(dāng)我點其他頁的時候,就是要再次用Ajax去請求數(shù)據(jù),點哪個數(shù)字就去獲取哪一頁的數(shù)據(jù)。那么我們就在callback:function(api){}這個函數(shù)里面這樣寫

    callback:function (api) {
                            $.ajax({
                                url:'',
                                type:'POST',
                                data:{
                                    currentPage:api.getCurrent()-1    //這個方法就是用來獲取點擊了哪一頁的,因為我  //的接口文檔中頁數(shù)是從0開始的,所以減1,當(dāng)我點擊第一頁的時候去獲取第0頁的數(shù)據(jù)
                                },
                                success:function (data) {
                                    console.log(data);             //返回那一頁的數(shù)據(jù)
                                }
                            })
                        }

現(xiàn)在你打開頁面去點擊一下頁碼,應(yīng)該可以在控制臺看到那一頁的數(shù)據(jù)了

至此,我們就會使用分頁插件來動態(tài)獲取數(shù)據(jù)了,剩下的就是將拿回來的數(shù)據(jù)放到頁面上,相信大家都懂的~寫在success里面即可

以下是完整的實例:

    <script type="text/javascript">
        $(document).ready(function() {
            var url = "/getAllInformationHandler";
            $.ajax({
                url: url,
                type: 'POST',
                dataType: 'JSON',
                success: function(data) {
                    var arr1=['盜','搶','丟','其他'];
                    var arr2=['蘋果','三星','華為','小米','魅族','LG','索尼','OPPO','美圖','努比亞','360','中興','HTC','錘子','一加','酷派','黑莓','金立','諾基亞','其他'];
 
                    for(var i=0;i<data.content.length;i++){
                        function fn1() {
                            if(data.content[i].photo!=""&&data.content[i].photo!=null){
                                return `${data.content[i].photo}`;
                            }else{
                                return 'images/defPic.jpg';
                            }
                        }
                        function fn2(){
                            if(data.content[i].phoneVersion!=""&&data.content[i].phoneVersion!=null){
                                return  `${data.content[i].phoneVersion}`;
                            }else{
                                return '其他';
                            }
                        }
                        $('.tbody').append(`
                        <tr>
                            <td>
                                <div class="image"><a href="details.html?id=${data.content[i].id}"><img src="${fn1()}"></a></div>
                            </td>
                            <td>${arr1[data.content[i].nature]}</td>
                            <td>${data.content[i].repostNumber}</td>
                            <td class="phoneBrand"><span title="iPone">${arr2[data.content[i].phoneBrand]}</span></td>
                            <td>${fn2()}</td>
                            <td>${data.content[i].imei}</td>
                            <td>${data.content[i].characteristic}</td>
                            <td>${data.content[i].userName}</td>
                            <td>${data.content[i].phone}</td>
                            <td>${data.content[i].wechat}</td>
                            <td><a href="details.html?id=${data.content[i].id}">詳情</a>
                            </td>
                         </tr>
                        `);
                    }
                    $('.M-box').pagination({
                        pageCount:data.totalPages,
                        coping:true,
                        homePage:'首頁',
                        endPage:'末頁',
                        prevContent:'上頁',
                        nextContent:'下頁',
                        current:1,
                        callback:function (api) {
                            $.ajax({
                                url:url,
                                type:'POST',
                                data:{
                                    currentPage:api.getCurrent()-1
                                },
                                success:function (data) {
                                    function fn1() {
                                        if(data.content[i].photo!=""&&data.content[i].photo!=null){
                                            return `${data.content[i].photo}`;
                                        }else{
                                            return 'images/defPic.jpg';
                                        }
                                    }
                                    function fn2(){
                                        if(data.content[i].phoneVersion!=""&&data.content[i].phoneVersion!=null){
                                            return  `${data.content[i].phoneVersion}`;
                                        }else{
                                            return '其他';
                                        }
                                    }
                                    //console.log(data);
                                    $('.tbody').html(``);
                                    var arr1=['盜','搶','丟','其他'];
                                    var arr2=['蘋果','三星','華為','小米','魅族','LG','索尼','OPPO','美圖','努比亞','360','中興','HTC','錘子','一加','酷派','黑莓','金立','諾基亞','其他'];
                                    for(var i=0;i<data.content.length;i++){
                                        $('.tbody').append(`
                                        <tr>
                                            <td>
                                                <div class="image"><a href="details.html?id=${data.content[i].id}"><img src="${fn1()}"></a></div>
                                            </td>
                                            <td>${arr1[data.content[i].nature]}</td>
                                            <td>${data.content[i].repostNumber}</td>
                                            <td class="phoneBrand"><span title="iPone">${arr2[data.content[i].phoneBrand]}</span></td>
                                            <td>${fn2()}</td>
                                            <td>${data.content[i].imei}</td>
                                            <td>${data.content[i].characteristic}</td>
                                            <td>${data.content[i].userName}</td>
                                            <td>${data.content[i].phone}</td>
                                            <td>${data.content[i].wechat}</td>
                                            <td><a href="details.html?id=${data.content[i].id}">詳情</a>
                                            </td>
                                         </tr>
                                        `);
                                    }
                                },
                                error:function () {
                                    alert("沒有找到對應(yīng)結(jié)果!");
                                }
                            })
                        }
                    });
 
                },
                error:function () {
                    alert("沒有找到對應(yīng)結(jié)果!");
                }
            });
        });
 
    </script>

最終的效果是這樣:


image

容易出錯的地方:

頁碼是從0還是從1開始,一開始沒有留意到這個細(xì)節(jié)導(dǎo)致初始顯示第1頁出來(第0頁的數(shù)據(jù)沒有了),而最后一頁卻是空白。所以要

currentPage:api.getCurrent()-1

參考文章:http://blog.csdn.net/baidu_25343343/article/details/70478467

(ps.我也是個初學(xué)者,第一次使用這個插件,如果有說的不對的地方請多多指教)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 引言 上篇文章為止我們有完整的介紹Android插件開發(fā)的流程。簡單的回顧一下就是通過系統(tǒng)的ClassLoader...
    H3c閱讀 3,799評論 4 8
  • 寫在前面: 今天風(fēng)太大了,吹得體溫偏低心情不悅,所以不寫作業(yè)了,專心致志編個故事。 乾坤艮兌坎離巽震八卦,當(dāng)事人「...
    Superconductor閱讀 451評論 0 0
  • 文/沐夏 原本不打算上鎖的密碼箱被我不小心鎖上了。用初始密碼000開箱卻發(fā)現(xiàn)打不開,真正的密碼是無意間滑到的隨機數(shù)...
    沐知夏閱讀 1,015評論 0 2

友情鏈接更多精彩內(nèi)容