說到基于jQuery的ajax分頁插件,那我們就先看看主要的代碼結構:
1、首先定義一個pager對象:
var sjPager = window.sjPager = {  opts: {   //默認屬性   pageSize: 10,   preText: "pre",   nextText: "next",   firstText: "First",   lastText: "Last",   shiftingLeft: 3,   shiftingRight: 3,   preLeast: 2,   nextLeast: 2,   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="1px"></table> <div id="pager"></div> </body>
$(function() {   $('#pager').sjAjaxPager({    url: "Handler1.ashx",    pageSize: 10,    searchParam: {     /*     * 如果有其他的查詢條件,直接在這里傳入即可     */     id: 1,     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代表分頁的數據。
這里只有代碼的大體結構及呈現的效果,大家不妨自己先動手實現一下。
新聞熱點
疑難解答