日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用pagination分页插件实现Ajax动态分页

發(fā)布時(shí)間:2024/4/11 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用pagination分页插件实现Ajax动态分页 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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

一、前言

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

?

二、使用方法

我們先來(lái)看看這款插件基本的使用方法:

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"> 2. HTML代碼

<div class="M-box"></div>
3.JS代碼
<script> $(function () { $('.M-box').pagination({ pageCount:50, jump:true, coping:true, homePage:'首頁(yè)', endPage:'末頁(yè)', prevContent:'上頁(yè)', nextContent:'下頁(yè)' }); }) </script> 現(xiàn)在你可以看到這樣的效果:




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

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

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

參數(shù)如下表:

options(參數(shù)配置)

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

下一步是怎么實(shí)現(xiàn)AJAX動(dòng)態(tài)分頁(yè)?

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

待會(huì)需要用到的是總頁(yè)碼,去接口文檔里面找找有沒有:


哈哈找到了!總頁(yè)碼就是totalPages

如果沒有總頁(yè)碼也沒關(guān)系,看看有沒有當(dāng)前頁(yè)的數(shù)據(jù)量和總的數(shù)據(jù)量,我們就可以將總頁(yè)碼算出來(lái):

//獲取總條數(shù) var sumCount=data.totalElements; //獲取返回的條數(shù) var count=data.numberOfElement; //總頁(yè)碼(向上取整) var pageCount=Math.ceil(sumCount/count);

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

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

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

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

<script>$(function () {$.ajax({url:'',type:'POST',dataType: 'JSON',data:{},success:function(data){//返回條數(shù)console.log(data.numberOfElements);//總條數(shù)console.log(data.totalElements);//總頁(yè)碼console.log(data.totalPages);$('.M-box').pagination({pageCount:data.totalPages, //總頁(yè)碼coping:true, //是否開啟首頁(yè)和末頁(yè)homePage:'首頁(yè)',endPage:'末頁(yè)',prevContent:'上頁(yè)',nextContent:'下頁(yè)',current:1, //當(dāng)前頁(yè)碼callback:function (api) { //這是一個(gè)回調(diào)函數(shù)}});}})})</script>

callback:function(api){

}

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


api接口

方法? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?參數(shù)? ? ? ? ? ? ? ? ? ? ? ? ? 說(shuō)明

getPageCount()? ? ? ? ? ? ? ? ?無(wú)? ? ? ? ? ? ? ? ? ? ? ?獲取總頁(yè)數(shù)

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

getCurrent()? ? ? ? ? ? ? ? ? ? ? 無(wú)? ? ? ? ? ? ? ? ? ? 獲取當(dāng)前頁(yè)

filling()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 無(wú)? ? ? ? ? ? ? ? ?填充數(shù)據(jù),參數(shù)為頁(yè)數(shù)


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

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


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

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

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

以下是完整的實(shí)例:

<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:'首頁(yè)',endPage:'末頁(yè)',prevContent:'上頁(yè)',nextContent:'下頁(yè)',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("沒有找到對(duì)應(yīng)結(jié)果!");}})}});},error:function () {alert("沒有找到對(duì)應(yīng)結(jié)果!");}});});</script>

最終的效果是這樣:



容易出錯(cuò)的地方:

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

currentPage:api.getCurrent()-1

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

(ps.我也是個(gè)初學(xué)者,第一次使用這個(gè)插件,如果有說(shuō)的不對(duì)的地方請(qǐng)多多指教)



總結(jié)

以上是生活随笔為你收集整理的使用pagination分页插件实现Ajax动态分页的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。