• 源码来袭!!!基于jquery的ajax分页插件(demo+源码)


      前几天打开自己的博客园主页,发现自己的园龄竟然有4年之久了,没记错的话刚接触编程就知道了博客园,也就是说我入坑4年了?时光啊~。刚学习编程的时候最喜欢的就是来园子里听大神们吹牛逼,看着他们装逼就觉得很过瘾,也学到了很多知识和技能。说来也惭愧,自己却没能为园友们分享自己的所学所得(毕竟水平烂!)。

      过去的一年也是辗转了几个城市换了几份工作(注定本命年不太平?)。八月份来到现在所在的公司(OTA行业),公司是做互联网的,所以可能大家的前端都看起来很屌?之前一直从事.NET开发(现在在这边也是),js也用的很少。于是趁着这个机会跟着大家学学js。本文要说到的插件就是在学习的过程中自己开发的。

      如果你还对jQuery插件开发没有任何了解,推荐一篇文章 http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html(博客园的前端大神很多啊,前段时间在园子看到很多优秀的js文章)

      如果有javascript基础,用过jquery,看了上面的文章,我相信妈妈再也不用担心你不会jQuery插件开发了。

      既然说到基于jQuery的ajax分页插件,那我们就先看看主要的代码结构:(我觉得对咱们程序员来说再优美的文字描述、介绍也比不上代码来得实在。Talk is cheap,Show me the code!)

      1、首先定义一个pager对象:

     1 var sjPager = window.sjPager = {
     2         opts: {
     3             //默认属性
     4             pageSize: 10,
     5             preText: "pre",
     6             nextText: "next",
     7             firstText: "First",
     8             lastText: "Last",
     9             shiftingLeft: 3,
    10             shiftingRight: 3,
    11             preLeast: 2,
    12             nextLeast: 2,
    13             showFirst: true,
    14             showLast: true,
    15             url: "",
    16             type: "POST",
    17             dataType: "JSON",
    18             searchParam: {},
    19             beforeSend: null,
    20             success: null,
    21             complete: null,
    22             error: function () {
    23                 alert("抱歉,请求出错,请重新请求!");
    24             },
    25         },
    26         pagerElement: null,//分页dom元素
    27         commonHtmlText: {
    28             //公共文本变量
    29         },
    30         init: function (obj, op) {
    31             //对象初始化
    32         },
    33         doPage: function (index, pageSize, searchParam) {
    34             //执行分页方法
    35         },
    36         getTotalPage: function () {
    37             //获取总页数
    38         },
    39         createPreAndFirstBtn: function (pageTextArr) {
    40             //创建上一页、首页按钮链接
    41         },
    42         createNextAndLastBtn: function (pageTextArr) {
    43             //创建下一页、尾页按钮链接
    44         },
    45         createIndexBtn: function (pageTextArr) {
    46             //中间分页索引按钮链接
    47         },
    48         renderHtml: function (pageTextArr) {
    49             //渲染分页控件到页面
    50         },
    51         createSpan: function (text, className) {
    52             //创建span
    53         },
    54         createIndexText: function (index, text) {
    55             //创建索引文本
    56         },
    57         jumpToPage: function () {
    58             //跳转到
    59         }
    60     }

      对象包含了分页的属性及用到的方法,doPage()为分页的核心方法。

      2、进行jQuery扩展

    1 $.fn.sjAjaxPager = function (option) {
    2         return sjPager.init($(this), option);
    3     };

      3、插件使用

    1 <body>
    2     
    3     <table id="dataTable" border="1px"></table>
    4     <div id="pager"></div>
    5 </body>
     1     $(function() {
     2             $('#pager').sjAjaxPager({
     3                 url: "Handler1.ashx",
     4                 pageSize: 10,
     5                 searchParam: {
     6                     /*
     7                     * 如果有其他的查询条件,直接在这里传入即可
     8                     */
     9                     id: 1,
    10                     name:'test',
    11                 },
    12                 beforeSend: function () {
    13                 },
    14                 success: function (data) {
    15                     /*
    16                     *返回的数据根据自己需要处理
    17                     */
    18                     var tableStr = "<tr><td>Id</td><td>姓名</td><td>年龄</td></tr>";
    19                     $.each(data.items, function(i,v) {
    20                         tableStr += "<tr><td>" + v.Id + "</td><td>" + v.Name + "</td><td>" + v.Age + "</td></tr>";
    21                     });
    22 
    23                     $('#dataTable').html(tableStr);
    24                 },
    25                 complete: function () {
    26                 }
    27             });
    28 
    29             
    30         })

      有没有发现使用方式与直接使用ajax基本是一样一样的?

      最后我们可以看下出来的效果:(表格样式没有设置比较丑,分页样式自己也可以根据需要修改css文件)

      

      F12打开调试工具,点击分页查看发送的请求及响应:

      

      

      pageIndex和pageSize为插件默认的参数,在后台可以直接在Request中获取。特别需要注意的是插件的响应也是需要遵循特定的格式{"total":0,"items":[]},如上图中所示total代表数据总记录数,items代表分页的数据。

      这里只有代码的大体结构及呈现的效果,大家不妨自己先动手实现一下,需要源码及DEMO的可以去我的github下载:https://github.com/sujing910206/ajax-pager DEMO是.NET实现的,但是如果是其他语言,实现的方式也都一样。

    写在最后:

      最后,请允许我矫情一下,就一下下(此处应该有害羞的表情⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄)。本命年终于快过去,过去的一年离开了呆了六年的地方还有很多一起玩耍的小伙伴,当然也加入了单身狗行列。来到深圳,我不知道我为何来会来深圳,完全陌生的一座城市,或许是有人告诉我这里适合年轻人,或许是听说这里冬天很暖和,也或许只是不想再继续呆在原来的地方。其实从很小开始就一个人在外面求学、工作,早已习惯了一个人在外面漂泊,难道是我这一生注定放纵不羁爱自由?啊哈哈哈哈。刚来这边的时候除了不适应还是不适应,可谓人生地不熟,也没有怎么出去玩过。现在也是,每天基本都是两点一线,周末才偶尔会去打打球唱唱歌来自娱自乐。终于快等到了猴年马月,新的一年希望我的生活能更丰富、交更多的朋友(女朋友),领悟更多的编程思想,坚持撸代码。好了,技术圣地不谈情感,希望这篇文章对你有帮助!

  • 相关阅读:
    Ant-编译构建(2)-第3方jar包引入、log4j2
    Ant-编译构建(1)-HelloWorld
    java List的初始化
    传入json字符串的post请求
    HttPclient 以post方式发送json
    cron表达式详解,cron表达式写法,cron表达式例子
    深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接
    Java两种延时——thread和timer
    List<List<Object>> list = new ArrayList<List<Object>>(); 求回答补充问题 list.get(position).add(Object);为什么会报错啊我想在对应的list里面添加对象
    关于 charset 的几种编码方式
  • 原文地址:https://www.cnblogs.com/sujing/p/5151326.html
Copyright © 2020-2023  润新知