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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

一、前言

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

?

二、使用方法

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

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:'首頁', endPage:'末頁', prevContent:'上頁', nextContent:'下頁' }); }) </script> 現在你可以看到這樣的效果:




?一共有50頁,可以輸入數字并跳轉到那一頁,有首頁、末頁、上頁、下頁這些按鈕

?對應回我上面的代碼就會發現這些都是我設置的,怎么根據自己的需要來設置呢,就是這樣的代碼:

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

參數如下表:

options(參數配置)

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

下一步是怎么實現AJAX動態分頁?

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

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


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

如果沒有總頁碼也沒關系,看看有沒有當前頁的數據量和總的數據量,我們就可以將總頁碼算出來:

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

現在就可以開始做動態分頁了

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

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

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

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

callback:function(api){

}

這是一個回調函數,即點擊分頁的數字按鈕時所執行的操作,回調函數中有一個參數叫api


api接口

方法? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?參數? ? ? ? ? ? ? ? ? ? ? ? ? 說明

getPageCount()? ? ? ? ? ? ? ? ?無? ? ? ? ? ? ? ? ? ? ? ?獲取總頁數

setPageCount(page)???? page:頁數? ? ? ? ? ? 設置總頁數

getCurrent()? ? ? ? ? ? ? ? ? ? ? 無? ? ? ? ? ? ? ? ? ? 獲取當前頁

filling()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 無? ? ? ? ? ? ? ? ?填充數據,參數為頁數


??看不懂也沒關系,待會看例子就懂了。

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


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

現在你打開頁面去點擊一下頁碼,應該可以在控制臺看到那一頁的數據了?

至此,我們就會使用分頁插件來動態獲取數據了,剩下的就是將拿回來的數據放到頁面上,相信大家都懂的~寫在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("沒有找到對應結果!");}})}});},error:function () {alert("沒有找到對應結果!");}});});</script>

最終的效果是這樣:



容易出錯的地方:

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

currentPage:api.getCurrent()-1

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

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



總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。