首页 > 其他分享 >jQuery入门(七)jQuery实现按钮分页

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

时间:2024-09-01 20:36:17浏览次数:3  
标签:jQuery 分页 pageSize pageInfo start 按钮 请求 page 入门

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

 

 

二、实现思路和代码
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);
    }
}

 


成功实现。

标签:jQuery,分页,pageSize,pageInfo,start,按钮,请求,page,入门
From: https://www.cnblogs.com/kongsq/p/18391702

相关文章

  • jQuery入门(六)jQuery实现瀑布分页
    一、瀑布流分页案例分析1.1)功能分析:鼠标下拉,加载分页数据(10条),如下图:  1.2)如何确定当前显示的数据已经浏览完毕?公式:(滚动条距底部的距离+滚动条上下滚动的距离+当前窗口的高度)>=当前文档的高度举例:-当前文档高......
  • ROS 入门-如何在Ubuntu系统中安装不同版本的ROS并编写基本示例
    引言在当今快速发展的科技时代,机器人技术正以前所未有的速度改变着我们的生活。从工业生产线上的自动化装配,到家庭中的智能助手,再到医疗领域的精密手术,机器人无处不在。然而,随着机器人应用范围的不断扩展,如何高效地开发和部署复杂的机器人系统成为了亟待解决的问题。正是在......
  • 音视频入门基础:WAV专题(7)——FFmpeg源码中计算WAV音频文件每个packet的size值的实现
    一、引言从文章《音视频入门基础:WAV专题(6)——通过FFprobe显示WAV音频文件每个数据包的信息》中我们可以知道,通过FFprobe命令可以显示WAV音频文件每个packet(也称为数据包或多媒体包)的信息,这些信息包含该packet的size:这个“size”实际是AVPacket结构体中的成员变量size,为WAV......
  • ROS1 入门 —— 编写自定义节点Node
    引言机器人操作系统(RobotOperatingSystem,ROS)是一个开源的元操作系统,用于开发机器人的软件。它并不是一个真正的操作系统,而是一套软件框架和服务,设计用来帮助开发者构建复杂的机器人系统。ROS提供了硬件抽象、设备驱动、库、消息传递和工具包等,使得机器人软件的开发变得......
  • 【VS Code编写Python】Python 快速入门指南
    1.前言Python扩展使VisualStudioCode成为出色的Python编辑器,可在任何操作系统上运行,并可与各种Python解释器一起使用。首先安装:VS代码Python解释器(任何积极支持的Python版本)VSCode市场上的Python扩展要进一步自定义VSCodeforPython,您可以利用Python......
  • C++菜鸟教程 - 从入门到精通 第一节
    一.C++简介C++是一种编程语言,它是由BjarneStroustrup于1979年在贝尔实验室开始设计开发的。C++进一步扩充和完善了C语言,是一种面向对象的程序设计语言。C++可运行于多种平台上,如Windows、MAC操作系统以及 UNIX的各种版本。C++是一种静态类型的、编译式的、......
  • Datawhale X 李宏毅苹果书 AI夏令营 深度学习入门笔记02
    目录一、学习资料二、学习笔记(一)线性模型1、考虑周期性2、修改模型(二)模型变形之分段线性曲线1、分段线性直线2、分段线性曲线的图像和表达式(机器学习第一步:写出带有未知数的函数)(1)如何构成(2)如何表达(3)如何改进3、分段线性曲线的损失(机器学习第二步:定义损失)4、分段......
  • JAVA之JVM入门
    Java虚拟机(JVM)是Java平台的核心部分之一,它为Java程序提供了运行环境。一、历史背景1.SunClassicVM发布时间:1996年重要功能:Java1.0的默认JVM。支持基本的字节码执行。简单的垃圾回收机制。2.HotSpotVM发布时间:1999年重要功能:JDK1.3开始成为默认JVM。引入了......
  • Java 入门指南:Java 并发编程 —— AQS、AQLS、AOS 锁与同步器的框架
    AQSAQS是AbstractQueuedSynchronizer的缩写,即抽象队列同步器,是Java.util.concurrent中的一个基础工具类,用于实现同步器(Synchronizer)的开发。AQS提供了一种实现锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的同步器,使得开发者能够更方便地编写线程安全的......
  • 【Python】Flask 快速入门
    Flask介绍Flask是一个轻量级的PythonWeb框架,非常适合快速开发和小型应用。官网:https://flask.palletsprojects.com/en/3.0.x/中文文档:https://dormousehole.readthedocs.io/en/latest/教程:https://www.runoob.com/flask/flask-tutorial.htmlFlask框架......