获取全部数据-分页显示功能

数据过多时我们用分页显示,大多数情况下我们可以跟后台协定规则分页,每次只请求当前页面数据进行展示。但如果我们是跟第三方合作进行数据获取而对方一次返回所有数据时前端需要获取全部数据然后分页展示,以下代码用于这种情况

代码如下:(用了rem做单位)

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
    <title>分页功能-获取所有数据</title>
</head>
<script>
    function fontAuto(){
        document.documentElement.style.fontSize = document.documentElement.clientWidth/19.2 + 'px';
    }
    fontAuto();
    window.onresize=function () {
        fontAuto();
    }
</script>
<style>
    .pages {
        margin-right: 0rem;
        position: relative;
        margin-top: 0.3rem;
        bottom: 0;
        text-align: right;
        font-size: 0.12rem;
        padding: 3px;
    }
    .pages a {
        border: 1px solid #0392db;
        background: none;
        color: #0392db;
        padding: 0.04rem 0.08rem;
        margin: 2px;
        margin-left: 6px;
        text-decoration: none;
        cursor: pointer;
    }
    .pages a.disabled {
        color: #0392db;
        font-size: 0.12rem;
        cursor: default;
        border: 1px solid #0392db;
        background: none;
        padding: 0.04rem 0.08rem;
    }
    .pages a.current {
        color: #fff;
        font-weight: bold;
        background: #1d7bdf;
        border-color: #1d7bdf;
    }
    .pages label {
        color: #0392db;
    }
    .pages span {
        font-size: 0.14rem;
        color: #e65c00;
    }
    .pages input {
        border: 1px solid #0392db;
        background: none;
        color: #0392db;
        width: 0.6rem;
        height: 0.24rem;
        line-height: 0.24rem;
        text-align:center;
    }
    .pages a:hover {
        background: #1d7bdf;
        color: #fff;
        transition-duration: 0.2s;
    }
</style>
<body>
<div class="table-wrap" style="margin:0;">
    <ul id="view_list" class="view_list clearfix"></ul>
   <div id="page" class="pages"></div>
</div>
<script src="js/jquery.min.js"></script>
<script>
    var picData;
    var pageSize=8;//每页显示8条数据;
    $.ajax({//ajax一次性获取后台数据
        url: 'xxxxxxxxxxxx',
        data: {},
        type : "GET",
        async : false,
        success: function (resp) {
            if(resp.success){
                var res=resp.rows;//获取结果数组
           if(res.length!=0){
                    picData=resp;
                    //分页计算
             var page_html="";//插入分页HTML
                    page_html+='<a id="first_page" class="disabled">首页</a> <a id="last_page" class="disabled">&lt;&lt;&nbsp;上一页</a>';
                    var totalPage=Math.ceil(resp.total/pageSize);//共分多少页
             for(var i=0;i<totalPage;i++){
                        if(i==0){
                            page_html+='<a class="current index_btn current_page" pagenum="'+(parseInt(i)+1)+'">'+(parseInt(i)+1)+'</a>';
                        }else{
                            page_html+='<a class="index_btn" pagenum="'+(parseInt(i)+1)+'">'+(parseInt(i)+1)+'</a>';
                        }
                    }
                    page_html+='<a id="next_page">下一页&nbsp;&gt;&gt;</a><a id="end_page">末页</a>';
                    page_html+='<label>共 </label> <span>'+totalPage+'</span> <label> 页 </label> <span>'+resp.total+'</span><label> 条 </label> <label> 跳转到 </label> <input type="text" id="page_to" value="1"><label> 页 </label> <a id="page_to_btn">GO</a>';
                    $("#page").html(page_html);
                    var resArr=[];//每页显示的数据放入数组
             if(res.length<pageSize){//如果数据总数小于设置的每页数据数则数组里只放所有数据
                for(var i=0;i<res.length;i++){
                            resArr.push(res[i]);
                        }
                    }else{//如果数据总数大于设置的每页数据数则数组里只放要求的8条数据
                for(var i=0;i<pageSize;i++){
                            resArr.push(res[i]);
                        }
                    }
                    picViewList(resArr);//数据填充进页面的方法
             //分页-首页点击
             $("#first_page").click(function(){
                        $(".index_btn").removeClass("current_page");
                        $(".index_btn").removeClass("current");
                        $(".index_btn").eq(0).addClass("current_page");
                        $(".index_btn").eq(0).addClass("current");
                        picViewList(resArr);
                    })
                    //分页-上一页点击
             $("#last_page").click(function(){
                        var current_index=$(".current_page").attr("pagenum");
                        if(current_index!=1){
                            $(".index_btn").removeClass("current_page");
                            $(".index_btn").removeClass("current");
                            $(".index_btn").eq(current_index-2).addClass("current_page");
                            $(".index_btn").eq(current_index-2).addClass("current");
                            var first_index=(current_index-2)*pageSize;
                            //var last_index=first_index+pageSize-1;
                            var resArr=[];
                            for(var i=first_index;i<first_index+pageSize;i++){
                                resArr.push(res[i]);
                            }
                            picViewList(resArr);
                        }else{
                            $(this).attr("disabled",true);
                        }

                    })
                    //分页-下一页点击
             $("#next_page").click(function(){
                        var current_index=$(".current_page").attr("pagenum");
                        if(current_index!=totalPage){
                            $(".index_btn").removeClass("current_page");
                            $(".index_btn").removeClass("current");
                            $(".index_btn").eq(current_index).addClass("current_page");
                            $(".index_btn").eq(current_index).addClass("current");
                            var first_index=current_index*pageSize;
                            //var last_index=first_index+pageSize-1;
                            var resArr=[];
                            for(var i=first_index;i<first_index+pageSize;i++){
                                resArr.push(res[i]);
                            }
                            picViewList(resArr);
                        }else{
                            $(this).attr("disabled",true);
                        }
                    })
                    //分页-末页点击
             $("#end_page").click(function(){
                        $(".index_btn").removeClass("current_page");
                        $(".index_btn").removeClass("current");
                        $(".index_btn").eq(totalPage-1).addClass("current_page");
                        $(".index_btn").eq(totalPage-1).addClass("current");
                        var first_index=(totalPage-1)*pageSize;
                        var resArr=[];
                        for(var i=first_index;i<first_index+pageSize;i++){
                            resArr.push(res[i]);
                        }
                        picViewList(resArr);
                    })
                    //分页-跳转到某页点击
             $(".index_btn").click(function(){
                        $(".index_btn").removeClass("current_page");
                        $(".index_btn").removeClass("current");
                        $(this).addClass("current_page");
                        $(this).addClass("current");
                        var current_index=$(this).attr("pagenum");
                        var first_index=(current_index-1)*pageSize;
                        var resArr=[];
                        for(var i=first_index;i<first_index+pageSize;i++){
                            resArr.push(res[i]);
                        }
                        picViewList(resArr);
                    })
                    //分页-Go按钮点击
             $("#page_to_btn").click(function(){
                        var go_v=$("#page_to").val();
                        var r = /^[0-9]*[1-9][0-9]*$/;//正整数
                if(r.test(go_v) && go_v<=totalPage && go_v>0){
                            $(".index_btn").removeClass("current_page");
                            $(".index_btn").removeClass("current");
                            $(".index_btn").eq(go_v-1).addClass("current_page");
                            $(".index_btn").eq(go_v-1).addClass("current");
                            var current_index=$(".index_btn").eq(go_v-1).attr("pagenum");
                            var first_index=(current_index-1)*pageSize;
                            var resArr=[];
                            for(var i=first_index;i<first_index+pageSize;i++){
                                resArr.push(res[i]);
                            }
                            picViewList(resArr);
                        }else{
                            alert('请输入正确跳转页数');
                        }
                    })
            }else{
                    $("#page").html("");
                }
            }else{
                alert("检索失败");
                $("#page").html("");

            }
        }
    });
    function picViewList(data){//数据填充页面方法

    }
</script>
</body>
</html>

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辣姐什么鬼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值