当前位置: 首页 > article >正文

jQuery入门(七)jQuery实现按钮分页

一、分页案例分析

功能分析:使用分页插件,实现分页,效果如下图:

二、实现思路和代码

        2.1)页面实现分析

  1.引入分页插件的样式文件和 js 文件。
  2. 定义当前页码和每页显示的条数。(分页必备信息)
  3. 调用查询数据的函数。
  4. 定义请求查询分页数据的函数,发起 AJAX 异步请求。
  5. 为分页按钮区域设置页数参数(总页数和当前页)。(设置分页插件参数,展示分页条)
  6. 为分页按钮绑定单击事件,完成上一页下一页查询功能。(设置分页插件,绑定事件)

页面代码实现:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>网站首页</title>
    <link rel="stylesheet" href="css/tt.css">
    <link rel="stylesheet" href="css/simplePagination.css">
</head>
<body>
<div class="top">
    <span class="top-left">下载APP</span>
    <span class="top-left"> 北京         晴天</span>
    <span class="top-right">更多产品</span>
</div>

<div class="container">

    <div class="left">
        <a>
            <!--<img src="img/logo.png"><br/>-->
        </a>

        <ul>
            <li>
                <a class="channel-item active" href="#">
                    <span>
                        推荐
                    </span>
                </a>
            </li>

            <li><a class="channel-item" href="#">
                <span>
                    视频
                </span>
            </a></li>

            <li><a class="channel-item" href="#">
                <span>
                    热点
                </span>
            </a></li>

            <li><a class="channel-item" href="#">
                <span>
                    直播
                </span>
            </a></li>

            <li><a class="channel-item" href="#">
                <span>
                    图片
                </span>
            </a></li>

            <li><a class="channel-item" href="#">
                <span>
                    娱乐
                </span>
            </a></li>

            <li><a class="channel-item" href="#">
                <span>
                    游戏
                </span>
            </a></li>

            <li><a class="channel-item" href="#">
                <span>
                    体育
                </span>
            </a></li>
        </ul>

    </div>
    <div class="center">
       <ul class="news_list">
          
        </ul>


        <div class="content">
            <div class="pagination-holder clearfix">
                <div id="light-pagination" class="pagination"></div>
            </div>
        </div>

    </div>
</div>
</body>
<script src="js/jquery-3.3.1.min.js"></script>
<script src="js/jquery.simplePagination.js"></script>
<script>
    //1.定义当前页码和每页显示的条数 (分页必备信息)
    let start = 1;
    let pageSize = 10;

    //2.调用查询数据的方法
    queryByPage(start,pageSize);
    

    //3.定义请求查询分页数据的函数,发起AJAX异步请求,将数据显示到页面
    function queryByPage(start,pageSize) {

        $.ajax({
            //请求的资源路径
            url:"newsServlet2",
            //请求的参数
            data:{"start":start,"pageSize":pageSize},
            //请求的方式
            type:"POST",
            //响应数据形式
            dataType:"json",
            //请求成功后的回调函数
            success:function (pageInfo) {
                //将数据显示到页面
                let titles = "";
                for(let i = 0; i < pageInfo.list.length; i++) {
                    titles += "<li>\n" +
                        "                <div class=\"title-box\">\n" +
                        "                    <a href=\"#\" class=\"link\">\n" +
                                                pageInfo.list[i].title +
                        "                        <hr>\n" +
                        "                    </a>\n" +
                        "                </div>\n" +
                        "            </li>";
                }
                $(".news_list").html(titles);

                //4.为分页按钮区域设置页数参数(总页数和当前页)
                $("#light-pagination").pagination({
                      pages:pageInfo.pages,
                      currentPage:pageInfo.pageNum

                });

                //5.为分页按钮绑定单击事件,完成上一页下一页查询功能(设置分页插件参数,展示分页条)
                $("#light-pagination .page-link").click(function () {
                    //获取点击按钮的文本内容
                    let page = $(this).html();
                    //如果点击的是Prev,调用查询方法,查询当前页的上一页数据
                    if(page == "Prev") {
                        queryByPage(pageInfo.pageNum - 1,pageSize);
                    }else if (page == "Next") {
                        //如果点击的是Next,调用查询方法,查询当前页的下一页数据(设置分页插件,绑定事件)
                        queryByPage(pageInfo.pageNum + 1,pageSize);
                    } else {
                        //调用查询方法,查询当前页的数据
                        queryByPage(page,pageSize);
                    }
                });
            }
        });
    }

</script>
</html>

        2.2) 服务器实现分析

   1. 获取请求参数。(当前页码和每页条数)
    2. 根据当前页码和每页显示的条数,调用业务层的方法,得到分页 Page 对象
    3. 封装 PageInfo 对象。
    4. 将得到的数据转为 json。
    5. 将数据响应给客户端。

服务器代码实现:

public class NewsServlet2 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对象
        NewsService service = new NewsServiceImpl();
        Page page = service.pageQuery(Integer.parseInt(start), Integer.parseInt(pageSize));

        //3.封装PageInfo对象
        PageInfo<List<News>> info = new PageInfo<>(page);

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

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

    }

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

成功实现。


http://www.kler.cn/a/292181.html

相关文章:

  • 六、volatile
  • HBuilder(uniapp) 配置android模拟器
  • 网络安全之WINDOWS端口及病毒编写
  • Ubuntu20.04 解决一段时间后键盘卡死的问题 ubuntu
  • 自动驾驶仿真:软件在环(SIL)测试详解(精简版入门)
  • 活动|华院计算作为联盟理事单位出席进博会全球人工智能合作论坛
  • Ubuntu22.04安装colmap
  • OpenCV:Python计算机视觉库详解
  • Guitar Pro 8.2.1 Build 32+Soundbanks Win/Mac音色库 开心激活版 音乐软件Guitar Pro 8中文破解版
  • 网络安全风险评估技术原理与应用
  • [项目][CMP][SizeAlignMap类设计]详细讲解
  • NLP从零开始------18.文本中阶处理之序列到序列模型(3)
  • maya无法导出fbx
  • JVM为什么要多一步翻译成class文件的理由之一
  • vue3 el-menu 菜单Maximum recursive updates exceeded 报错
  • 2024年高教社杯全国大学生数学建模竞赛E题思路(2024数学建模国赛E题思路)
  • 物联网技术推动灌区智能化管理
  • 网络安全服务基础Windows--第11节-WEB服务与虚拟主机
  • JSON格式化?超简单!
  • 【渗透测试专栏】1.2认证和授权类-越权访问(水平/垂直越权)
  • 记录共通的js方法
  • 六、桥接模式
  • 信息安全数学基础(1)整除的概念
  • 并行处理大 csv 文件
  • 腾讯云 安装部署 SSL 证书到负载均衡(CLB)指引
  • 微信小程序rpx和px关系