說到基於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代表分頁的資料。
這裡只有代碼的大體結構及呈現的效果,大家不妨自己先動手實現一下。