说到基于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、插件使用
$(function() { $('#pager').sjajaxpager({ url: handler1.ashx, pagesize: 10, searchparam: { /* * 如果有其他的查询条件,直接在这里传入即可 */ id: 1, name:'test', }, beforesend: function () { }, success: function (data) { /* *返回的数据根据自己需要处理 */ var tablestr = id 姓名 年龄
; $.each(data.items, function(i,v) { tablestr += + v.id + + v.name + + v.age +
; }); $('#datatable').html(tablestr); }, complete: function () { } }); })
有没有发现使用方式与直接使用ajax基本是一样一样的?
最后我们可以看下出来的效果:(表格样式没有设置比较丑,分页样式自己也可以根据需要修改css文件)
f12打开调试工具,点击分页查看发送的请求及响应:
pageindex和pagesize为插件默认的参数,在后台可以直接在request中获取。特别需要注意的是插件的响应也是需要遵循特定的格式{total:0,items:[]},如上图中所示total代表数据总记录数,items代表分页的数据。
这里只有代码的大体结构及呈现的效果,大家不妨自己先动手实现一下。