zoukankan      html  css  js  c++  java
  • 不想分页怎么办??-->页面数据的滚动加载

    在前几天的一次前台数据展示的时候

    为了更好的用户的体验

    就想着做一个数据的滚动加载功能

    于是简单的查询了网上的实现方式

    基本都是在页面加载的时候绑定scroll事件

    然后判断页面触底的时候

    进行ajax请求获取数据

    然后将数据追加到数据展示层的div后面

    于是也找了几个demo看了看

    决定自己动手把这个功能实现

    直接看代码吧

    代码中注释也很详细:

     $(document).ready(function(){  
            //页面加载的时候绑定触底滚动加载事件
            $(window).bind('scroll',function(){show()});  
            function show() {
                //获取页面首次加载时设置在隐藏文本框中的当前页的值
                //在页面会有两个隐藏的文本框 
                //<input type="hidden" id="currentPage" value="${currentPage }">  当前页
                //<input type="hidden" id="totalPage" value="${totalPage }">  进入该页面的时候把总页数放到该隐藏域中
                var currentPage = $('#currentPage').val();
                //获取页面首次加载时设置在隐藏文本框中的总页数值
                var totalPage = $('#totalPage').val();
                //如果当前页小于总页数 就进入判断
                   if(currentPage <= totalPage) {
                       //判断页面是否已经触底 如果触底就调用ajaxRead()方法来进行下一页数据的加载  并将当前页和总页数传过去
                       if($(window).scrollTop()+$(window).height()>=$(document).height())  { 
                           ajaxRead(currentPage, totalPage);  
                    }
                   } else {
                       //取消绑定scroll滚动事件
                       $(window).unbind('scroll');
                       //如果数据加载完毕 在blog-main Div后面追加提示语
                       $('#blog-main').append("<div style='text-align: center;'><h3>拼命更新数据中。。。。。。</h3></div>");
                   }
            }
            function ajaxRead(currentPage, totalPage) {
                var html= "";  
                $.ajax({  
                      type:'get',  
                      url:'portal/scrollLoad', 
                      data:{currentPage: currentPage,totalPage:totalPage},
                      success: function(data){
                          //获取后台传过来的年鉴列表
                          var list = eval(data.yearBookJson);
                          //遍历年鉴列表数据
                          for (var i = 0; i < list.length; i++) {
                            html = "<div class='col-md-4 col-sm-4'><article class='blog-teaser'><header>";
                            html = html + "<img style=' 326px;height: 135px;' src='<%=basePath%>uploadFiles/uploadImgs/";
                            html = html + list[i].YEARBOOK+"' alt="+list[i].YEARBOOKNAME;
                            html = html + "'><h3><a href='portal/nianjiandetail?YEARBOOK_ID="+list[i].YEARBOOK_ID;
                            html = html + "'>"+list[i].YEARBOOKNAME;
                            html = html + "</a></h3><hr></header></article></div>";
                            //在yearBookBox Div后追加拼接的HTML代码
                            $('#yearBookBox').append(html);
                          } 
                          //隐藏文本框中的当前页的值
                          var ajaxchange = $('#currentPage').val();
                          //本次加载完后隐藏文本框里的当前页的值需要加1 为下一次调用准备
                          $('#currentPage').val(parseInt(ajaxchange)+1);
                      }
                });  
            }
        });   

    js的代码就这么多,后台业务代码就不展示了,ajax请求成功后解析返回的数据即可。祝好运

  • 相关阅读:
    Manage by Xcode
    CrashLog查看
    关于NSDateFormatter的格式dd是月天,DD是年天
    【转】 XCode的一些调试技巧
    应用程序互相跳转
    【转】如何将TapkuLibrary框架添加到Xcode4工程项目中
    NSString initWithBytes: 有最大值限制
    在一个workspace中的 各个工程 最好设置一致
    从桌面应用自动化测试看移动应用自动化测试
    基于Android平台应用程序的关键字驱动自动化测试 – 理论、工具和实践
  • 原文地址:https://www.cnblogs.com/guxiong/p/8547827.html
Copyright © 2011-2022 走看看