简单ajax 分页

绮霰
• 阅读 5012

简单分页:
效果图:
简单ajax 分页
思路:

数据渲染=》数据遍历(每页显示已规定好的条数).bindList()和执行分页渲染.initPaginator()
点击分页和下一页的时候,重新请求数据渲染,对应的数据重新遍历。

代码实现:

html:

<!doctype html>
<html style='' lang="en">
<head>
    <title>分页测试</title>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0"/>
    <script src="https://cdn.bootcss.com/jquery/2.1.0/jquery.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"
          integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"/>
    <style>
        * {margin: 0;padding: 0;}
        .list li{display: block;}
        .list li img{display: block;width:100px;}
    </style>

</head>
<body>
<div class="list">
    <ul id="listContent">
        <li></li>
    </ul>
</div>
<div id="pagination" style="display: none">
    <ul class="pagination"></ul>
</div>
</body>
</html>

js:

<script type="text/javascript">
    var List = {
        contentId: "listContent", //渲染列表id
        pageId: "pagination",  //渲染分页id
        pageIndex: 1, //第几页开始渲染
        pageSize: 6,//每页渲染多少条数据
        pageSum:0,//共多少条数据
        refreshId: null
    };
    //data.count为总的数据条数,即共多少条数据
    List.loadList = function (pageIndex) {
        var ajaxRequest = function () {
            $.ajax({
                url: "http://123.56.196.192:2000/syxa/news-consult/2/0/1000000",
                type: "GET",
                // data: data,
                error: function () {
                    // console.log(error);
                },
                success: function (data) {
                    console.log(data);
                    console.log(data.data.length);
                    if (data.count == 0) {
                        console.log('当前没有数据记录');
                    }
                    else {
                        if(pageIndex == 1){
                            List.initPaginator(data.count, data.data);
                            $('#' + List.pageId).show();
                            $('.pagination li[data-page="1"]').addClass('active');
                            $('.pagination li.page-first').removeClass('active').addClass('disabled');
                        }
                        List.bindList(pageIndex,data.count,data.data);
                    }
                }
            });
        }
        ajaxRequest();
    };

    //数据遍历
    List.bindList = function (pageIndex,count,data) { 
        var start = (pageIndex - 1) * List.pageSize; // 数据开始点
        var content = '';
        for (var index = start; index < pageIndex*List.pageSize && index < data.length; index++) { //遍历第几页内容,pageIndex也页面顺序
            console.log(data[index]);
            content += List.getListItem(data[index]);
        }
        $('#' + List.contentId).html('');
        $('#' + List.contentId).append(content);
    };

    List.getListItem = function (item) {
        var content = '';
        content += ' <li>';
        content += ' <a href="javascript:;"><img src="' + item.top_img + '" alt="' + item.title + '" /></a>';
        content += ' <h4>' + item.title + '</h4>';
        content += ' </li>';
        return content;
    };
    //分页
    List.initPaginator = function (count, data) {
        var pageSize = List.pageSize;
        var pageTotal = Math.ceil(count / pageSize);
        var pageIndex = List.pageIndex;
        List.pageSum = pageTotal;
        console.log(pageTotal);
        var html = "";
        for (var i = pageIndex; i <= pageTotal; i++) {
            html += '<li class="page" data-page="' + i + '"><a href="javascript:;">' + i + '</a></li>';
        }
        html = '<li data-page="1" class="page-first"><a href="javascript:;">首页</a></li>'
            + '<li data-page="" class="page-prev disabled"><a href="javascript:;" >上一页</a></li>'
            + html
            + '<li data-page="2" class="page-next"><a href="javascript:;">下一页</a></li>'
            + '<li data-page="' + pageTotal + '" class="page-last"><a href="javascript:;">末页</a></li>';
        $('#' + List.pageId).find('ul').html(html);
    };

    //点击页码刷新跳数据
    $('#' + List.pageId).on('click','li',function (e) {
        var pageIndex=parseInt($(this).attr('data-page'));
        var activeIndex=parseInt($('.pagination li.active').attr('data-page'));//当前active状态页码
        $('.pagination li').removeClass('active');
        if($(this).hasClass('page-prev')) {
            List.loadList(activeIndex-1);
            var cur=activeIndex-1;
            $('.page-next,.page-last').removeClass('disabled');
            $('.pagination li.page[data-page=' + cur + ']').addClass('active');
            if(cur == 1){
                $('.page-prev,.page-first').addClass('disabled');
                $('.page-prev').attr('data-page','');
            }else{
                $('.page-prev').attr('data-page',activeIndex-2);
                $('.page-next').attr('data-page',activeIndex);
            }

        }else if($(this).hasClass('page-next')){
            List.loadList(activeIndex+1);
            var cur=activeIndex+1;
            $('.page-prev,.page-first').removeClass('disabled');
            $('.pagination li.page[data-page=' + cur + ']').addClass('active');
            if(cur == List.pageSum){
                $('.page-next,.page-last').addClass('disabled');
                $('.page-next').attr('data-page','');
            }else{
                $('.page-prev').attr('data-page',activeIndex);
                $('.page-next').attr('data-page',activeIndex+2);
            }

        }else if((!$(this).hasClass('page-prev')) &&(!$(this).hasClass('page-next'))){
            $(this).addClass('active');
            List.loadList($(this).attr('data-page'));
        }
        if(!($(this).hasClass('page-first')) && !($(this).hasClass('page-prev'))&& !($(this).hasClass('page-last')) && !($(this).hasClass('page-next'))){
            if(pageIndex == 1){
                $('.page-prev,.page-first').addClass('disabled');
                $('.page-next,.page-last').removeClass('disabled');
                $('.page-next').attr('data-page','2');
            }else if(pageIndex == List.pageSum){
                $('.page-prev,.page-first').removeClass('disabled');
                $('.page-next,.page-last').addClass('disabled');
                $('.page-prev').attr('data-page',List.pageSum-1);
                $('.page-next').attr('data-page','');
            }else{
                $('.page-prev,.page-first').removeClass('disabled');
                $('.page-next,.page-last').removeClass('disabled');
                $('.page-prev').attr('data-page',pageIndex-1);
                $('.page-next').attr('data-page',pageIndex+1);
            }
        }
    });
    //页面初始化
    $(function () {
        List.loadList(List.pageIndex);
    });

</script>
点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
关于报表打印
1分页策略分页与打印时密切相关的,皕杰报表提供了四种分页策略,即按纸张大小分页、按数据行数分页、按数据列数分页、用户自定义分页和不分页。分页由2个因素来控制,一个每个页面的大小,另外一个是分页顺序(打印顺序)。打开或新建一张报表,单击报表的空白处,则与报表
Wesley13 Wesley13
3年前
java ssm框架实现分页功能 (oracle)
javaweb实现分页功能使用框架:ssm数据库:oracle话说oracle的分页查询比mysql复杂多了,在这里简单谈一下:查询前十条数据:1SELECTFROM(2SELECTROWNUMWN,RN.FROM(3
Stella981 Stella981
3年前
C# 将DataTable转换成list (
将DataTable转换成list及数据分页:///<summary///酒店评论列表分页///</summary///<paramname"userId"</param///<paramname"pageIndex"当前页</param///<paramna
Stella981 Stella981
3年前
SpringBoot学习之路:05.Spring Boot集成pagehelper分页插件
      前面说了SpringBoot集成持久层框架Mybatis的过程,和使用mybatis进行对数据库进行CRUD的操作,然而当对多数据进行查询时就需要进行分页了,分页技术分为客户端分页和服务器端分页(数据库分页),客户端分页是前端的数据插件对返回的数据集进行分页(bootstruptable、quitable等),客户端分页会对数据库和客
Easter79 Easter79
3年前
SpringBoot学习之路:05.Spring Boot集成pagehelper分页插件
      前面说了SpringBoot集成持久层框架Mybatis的过程,和使用mybatis进行对数据库进行CRUD的操作,然而当对多数据进行查询时就需要进行分页了,分页技术分为客户端分页和服务器端分页(数据库分页),客户端分页是前端的数据插件对返回的数据集进行分页(bootstruptable、quitable等),客户端分页会对数据库和客
Wesley13 Wesley13
3年前
mysql5.6 分页查询优化
mysql5.6分页查询优化场景:表结构:主键(非自增)contentCode(varchar),过滤条件列为updateTime(timeStamp),已经为timestamp建立索引。搜索sql为:SELECTFROMmy_hello_tableWHEREupdat
Stella981 Stella981
3年前
JFinal各种场景(PC、APP、微信小程序等)分页方案
JFinal专题之分页解决方案【课程介绍】 详细介绍数据库分页原理,自己动手封装前端分页组件,然后介绍第三方的js分页组件,集成laypage插件,了解各种分页模式,不管是跳转分页,数据库分页、前端分页、滚动加载分页、ajax数据分页、APP移动端分页、微信小程序分页等【课程目标】 掌握数据库分页原理,熟练使用JFinal操作数据库分页查
Stella981 Stella981
3年前
Elasticsearch分页解决方案
一、命令的方式做分页1、常见的分页方式:fromsizeelasticsearch默认采用的分页方式是fromsize的形式,但是在深度分页的情况下,这种使用方式的效率是非常低的,比如from5000,size10,es需要在各个分片上匹配排序并得到5000\10条有效数据,然后在结果集中取最后10条数据返回。除了会遇到效率上的问题
研发日常踩坑-Mysql分页数据重复 | 京东云技术团队
踩坑描述:写分页查询接口,orderby和limit混用的时候,出现了排序的混乱情况在进行第N页查询时,出现与第一前面页码的数据一样的记录。问题在MySQL中分页查询,我们经常会用limit,如:limit(0,20)表示查询第一页的20条数据,limit
得嘞,分页插件PageHelper返回记录总数total竟然出错了!
问题描述分页返回的记录总数total和每页数量pageSize一致,数据库统计的数量大于当前返回的总记录数total,以下是相关代码问题分析sql错误导致返回信息有误?检查结果:经过数据执行日志中生成的sql,sql正常并且数据总条数也正确PageHelp