使用jquery-pagination实现Ajax分页

在项目开发中,我们经常会使用到分页。

可能在后端开发中,已经有封装的分页,我们不需要去涉及太多。

但是如果在前端展示呢,需要简单而方便的分页操作

首先,在页面中,需要的是在页面加载的时候异步加载分页的数据,接下来请看步骤:

1:html准备工作

<!--这是配置要存放数据的div,有的时候是用ul-->
<div id="showPage">
 </div>
<!--这是配置分页器,下面会进行初始化-->
<span id="Pagination" style="color: red;float: right;"></span>


2:js部分

<script type="text/javascript">

    var pageSize =5;// 定义每页显示多少
      var count;    
      $(document).ready(function(){
           load();
});

function load(){
        if(${total}<=pageSize){//当前只有一页
            ajaxLoad(0);
        }else{
             pageselectCallback(0);//多页,默认从第一页加载
            function pageselectCallback(pageIndex) {//该index是点击会传过来的数据
                ajaxLoad(pageIndex);
               return false;// false则不刷新页面到#
            }
        }
        //分页显示器初始化,以及配置
        $("#Pagination").pagination(count, { // count通过从数据库查询记录进行赋值,返回记录的总数
        callback : pageselectCallback, // 点击分页时,调用的回调函数
        prev_text : '上一页', // 自定义,显示上一页按钮的文本
        next_text : '下一页 ', // 自定义,显示下一页按钮的文本
        items_per_page : pageSize, // 每页显示的项数
        num_display_entries : 6, // 分页插件中间显示的按钮数目
        current_page : 0, // 当前页索引
        num_edge_entries : 2 // 分页插件左右两边显示的按钮数目  
        });
}

//加载方法
function ajaxLoad(pageIndex){
 var html = "";
// 初始化加载
        $.ajax({
            type : "POST",
            async : false,
            url :"**",//控制器的地址
            data : {
                pageIndex : pageIndex, //必须的参数,当前页
                pageSize : pageSize     //必须的参数,当前显示的数据量
            },// 传递页面索引
            dataType : "json",
            success : function(data, textStatus) {
                count = data.totalRows;// 给必须count变量赋值
                var action = "<%=path%>";
                var items = data.results;// json返回结果集

                //以下是将数据显示到div中

                $.each(items, function(i, item) {
                   var des;
                     html+="<div class='*'>";
                     html+="<img src="+item.IMAGE+" ></div>";
                     html+="<p class='*'>"+item.TITLE+"</p>";
                     html+="<p class='*'><span class='*'>"+des+"</span>";
                     html+="<a href="+action+"/info/"+item.INDUSTRY_INFORMATION_ID+".html"+">[查看全文]</a></p>";
                     html+="<div class='*'>";
                     html+="<i class='*'>"+item.CREATE_TIME+"</i></div>";
                });
                  document.getElementById("showPage").innerHTML ="";   //html要显示的div先清空,下一次分页显示的时候会把上一次的数据清空,否则会出现叠加
                  var oDiv = document.createElement('div');             //创建临时div,以为上面的操作会将div也清空
                  oDiv.innerHTML = html;                                          //将后台取出来的数据存放到临时的div中
                  document.getElementById("showPage").appendChild(oDiv);   //将数据存放在showPage下面
             },  
             error : function() {  
                
            }  
        });
}
 
</script>

 

3:控制器,这边使用的是springmvc

   

@RequestMapping(value="/*.html")
    @ResponseBody
    public void getPage(HttpServletResponse response){
        Map<String,Object> map=new HashMap<String, Object>();
        PageData pd = new PageData();
        try{
            pd = this.getPageData();
            int pageNow = Integer.parseInt(pd.getString("pageIndex"));
            int pageSize = Integer.parseInt(pd.getString("pageSize"));
            Integer start=pageNow*pageSize;
            pd.put("start", start);
            pd.put("pageSize", pageSize);    
            List<PageData> list = indexService.findNewsPage(pd);
            List<PageData> totalList=indexService.findNewsPageTotal(pd);
            Long total=(Long) totalList.get(0).get("total");
            response.setHeader("Cache-Control", "no-cache");   
            response.setContentType("text/json;charset=UTF-8");  
            response.setCharacterEncoding("UTF-8");  
            PrintWriter out = response.getWriter();   
            map.put("results", list);
            map.put("totalRows", total);
            JSONObject json=JSONObject.fromObject(map);
            out.print(json);
            out.flush();
            out.close();
        } catch(Exception e){
            logger.error(e.toString(), e);
        }
        
    }

 

4:此时数据加载已经完毕。需要注意的是

初始化页面需要定义每页显示的数据多少,从后台获取数据数量${total}。每次加载完需要为count赋值

如果您有兴趣,欢迎加入it成长之路学习交流群:728603969

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值