羔迪 发表于 3 天前

jQuery(六)jQuery实现瀑布分页

一、瀑布流分页案例分析
      1.1)功能分析:
  鼠标下拉,加载分页数据(10条) ,如下图:
 
 
      1.2)如何确定当前显示的数据已经浏览完毕?
      公式:(滚动条距底部的距离 + 滚动条上下滚动的距离 + 当前窗口的高度) >= 当前文档的高度
        举例:
  - 当前文档高度:存储10条数据,100px。
  - 滚动条距底部的距离:1px。
  - 当前窗口的高度:80px。
  - 滚动条上下滚动的距离:>=19px。
        因为文档高度不确定,不能只判断 滚动条上下滚动的距离大于等于19px。即要判断: 滚动条距底部的距离1px+当前窗口的高度80px +滚动条上下滚动的距离19px >=当前文档的高度。

      1.3)前置知识点:
           $(function(){})页面加载事件
           $(window)       获取当前窗口对象
           scroll()            鼠标滚动事件
           $(window).height()       当前窗口的高度
           $(window).scrollTop()      滚动条上下滚动的距离
           $(document).height()      当前文档高度
二、实现思路和代码

2.1)页面实现思路:
      1. 定义发送请求标记。(控制是否发起请求,如果当前处于请求状态,就不能再去发请求,只有在请求完毕才能重新发起请求,类似于多线程里的等待唤醒机制)
      2. 定义当前页码和每页显示的条数。 (分页必备的两个参数)
      3. 定义滚动条距底部的距离。(可以设置固定值1就可以)
      4. 设置页面加载事件。(事件里完成后续功能)
      5. 为当前窗口绑定滚动条滚动事件。()
      6. 获取必要信息(当前窗口的高度,滚动条上下滚动的距离,当前文档的高度)。
      7. 计算当前展示数据是否浏览完毕。(浏览完毕需要发起请求)
      8. 判断请求标记是否为 true。
      9. 为true,将请求标记置为 false,当前异步操作完成前,不能重新发起请求。
      10. 根据当前页和每页显示的条数来请求查询分页数据。
      11. 当前页码+1。
页面和代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>网站首页</title>
    <link rel="stylesheet" href="css/tt.css">
</head>
<body>

    <span class="top-left">下载APP</span>
    <span class="top-left"> 北京         晴天</span>
    <span class="top-right">更多产品</span>




   
      
            <img src="https://www.cnblogs.com/img/logo.png"><br/>
      

      <ul>
            <li>
               
                  <span>
                        推荐
                  </span>
               
            </li>

            <li>
                <span>
                  视频
                </span>
            </li>

            <li>
                <span>
                  热点
                </span>
            </li>

            <li>
                <span>
                  直播
                </span>
            </li>

            <li>
                <span>
                  图片
                </span>
            </li>

            <li>
                <span>
                  娱乐
                </span>
            </li>

            <li>
                <span>
                  游戏
                </span>
            </li>

            <li>
                <span>
                  体育
                </span>
            </li>

      </ul>

   
   
      <ul class="news_list">
            <li>
               
                  
                        
                        
                        这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !1
                        <hr>
                  
               
            </li>
            <li>
               
                  
                        这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !2
                        <hr>
                  
               
            </li>
            <li>
               
                  
                        这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !3
                        <hr>
                  
               
            </li>
            <li>
               
                  
                        这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !4
                        <hr>
                  
               
            </li>
            <li>
               
                  
                        这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !5
                        <hr>
                  
               
            </li>
            <li>
               
                  
                        这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !6
                        <hr>
                  
               
            </li>
            <li>
               
                  
                        这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !7
                        <hr>
                  
               
            </li>
            <li>
               
                  
                        这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !8
                        <hr>
                  
               
            </li>
            <li>
               
                  
                        这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !9
                        <hr>
                  
               
            </li>
            <li>
               
                  
                        这里是内容 !这里是内容 !这里是内容 !这里是内容 !这里是内容 !10
                        <hr>
                  
               
            </li>
      </ul>

      
            <img src="https://www.cnblogs.com/img/loading2.gif" height="100%">
      

      
            
               
            
      

      
   

</body>


</html> 
2.2)服务器实现思路:
1. 获取请求参数(当前页,每页显示的条数)。
2. 根据当前页码和每页显示的条数,调用业务层的方法,得到分页 Page 对象。
3. 将得到的数据转为 json。
4. 将数据响应给客户端。
服务器代码:
public class NewsServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      //设置请求和响应的编码
      req.setCharacterEncoding("UTF-8");
      resp.setContentType("text/html;charset=UTF-8");

      //1.获取请求参数
      String start = req.getParameter("start");
      String pageSize = req.getParameter("pageSize");

      //2.根据当前页码和每页显示的条数来调用业务层的查询方法,得到分页Page对象
      Page page = service.pageQuery(Integer.parseInt(start), Integer.parseInt(pageSize));

      //3.将得到的数据转为JSON
      String json = new ObjectMapper().writeValueAsString(page);

      try {
            Thread.sleep(1000);
      } catch (InterruptedException e) {
            e.printStackTrace();
      }

      //4.将数据响应给客户端
      resp.getWriter().write(json);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      doPost(req,resp);
    }

成功实现。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: jQuery(六)jQuery实现瀑布分页