既然說到基于jQuery的ajax分頁插件,那我們就先看看主要的代碼結構:(我覺得對咱們程序員來說再優美的文字描述、介紹也
比不上代碼來得實在。)
1、首先定義一個pager對象:
var sjPager = window.sjPager = {opts: {//默認屬性pageSize: ,preText: "pre",nextText: "next",firstText: "First",lastText: "Last",shiftingLeft: ,shiftingRight: ,preLeast: ,nextLeast: ,showFirst: true,showLast: true,url: "",type: "POST",dataType: "JSON",searchParam: {},beforeSend: null,success: null,complete: null,error: function () {alert("抱歉,請求出錯,請重新請求!");},},pagerElement: null,//分頁dom元素commonHtmlText: {//公共文本變量},init: function (obj, op) {//對象初始化},doPage: function (index, pageSize, searchParam) {//執行分頁方法},getTotalPage: function () {//獲取總頁數},createPreAndFirstBtn: function (pageTextArr) {//創建上一頁、首頁按鈕鏈接},createNextAndLastBtn: function (pageTextArr) {//創建下一頁、尾頁按鈕鏈接},createIndexBtn: function (pageTextArr) {//中間分頁索引按鈕鏈接},renderHtml: function (pageTextArr) {//渲染分頁控件到頁面},createSpan: function (text, className) {//創建span},createIndexText: function (index, text) {//創建索引文本},jumpToPage: function () {//跳轉到}}
對象包含了分頁的屬性及用到的方法,doPage()為分頁的核心方法。
2、進行jQuery擴展
$.fn.sjAjaxPager = function (option) {return sjPager.init($(this), option);};
3、插件使用
<body><table id="dataTable" border="px"></table><div id="pager"></div></body> $(function() {$('#pager').sjAjaxPager({url: "Handler.ashx",pageSize: ,searchParam: {/** 如果有其他的查詢條件,直接在這里傳入即可*/id: ,name:'test',},beforeSend: function () {},success: function (data) {/**返回的數據根據自己需要處理*/var tableStr = "<tr><td>Id</td><td>姓名</td><td>年齡</td></tr>";$.each(data.items, function(i,v) {tableStr += "<tr><td>" + v.Id + "</td><td>" + v.Name + "</td><td>" + v.Age + "</td></tr>";});$('#dataTable').html(tableStr);},complete: function () {}});})
有沒有發現使用方式與直接使用ajax基本是一樣一樣的?
最后我們可以看下出來的效果:(表格樣式沒有設置比較丑,分頁樣式自己也可以根據需要修改css文件)
F12打開調試工具,點擊分頁查看發送的請求及響應:
pageIndex和pageSize為插件默認的參數,在后臺可以直接在Request中獲取。特別需要注意的是插件的響應也是需要遵循特定的格式{"total":0,"items":[]},如上圖中所示total代表數據總記錄數,items代表分頁的數據。
下面在來看一個jquery ajax分頁插件的例子
對1.0版進行了重構,去掉了一些花銷的功能,優化了頁面樣式,現有功能:
1)、一次性把數據加載到頁面內存,在頁面進行分頁。
2)、使用jquery的ajax每次從服務器取數據分頁。
3)、支持自定義分頁條樣式,插件默認實現兩種樣式可供選擇。
<table id="table2" > <thead> <tr><th width="200px">網站名稱</th> <th width="100px">網址</th> <th width="100px">知名度</th> <th width="120px">訪問量</th> </tr> </thead> <tbody></tbody> </table> $("#table2").bigPage({ajaxData:{url:"ajax.php"}});