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

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 {@Overrideprotected 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.将得到的数据转为JSONString json = new ObjectMapper().writeValueAsString(info);//5.将数据响应给客户端resp.getWriter().write(json);}@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req,resp);}
}

成功实现。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 关于VUE3开发频繁引入ref,reactive,computed等基础函数。
  • c++ 标准模板库 STL
  • 运维问题0001:MM模块-MIGO收货报错“消息号 M7036 对于采购订单********无收货可能”
  • 【MySql】在Redis使用中,缓存不一致的夺命十八问!
  • 系统监控和命令行环境
  • 会赢的!(牛客)
  • python进阶篇-day04-闭包与装饰器
  • Springboot快速创建的两种方法(简单易学)
  • UE5 UMG UI编辑器工作流
  • HarmonyOS NEXT未成年人模式无缝联动所有应用,过滤非适龄内容
  • C语言学习笔记 Day15(文件管理--下)
  • 多态,匿名内部类(lambda表达式),集合
  • 【Tools】如何评价黑悟空这款游戏
  • Python中的集合魔法:解锁高效数据处理的秘密
  • 无法连接Redis服务问题排查
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • bootstrap创建登录注册页面
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • eclipse(luna)创建web工程
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • Java新版本的开发已正式进入轨道,版本号18.3
  • Js基础知识(一) - 变量
  • linux安装openssl、swoole等扩展的具体步骤
  • Mysql5.6主从复制
  • MySQL用户中的%到底包不包括localhost?
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • WinRAR存在严重的安全漏洞影响5亿用户
  • XForms - 更强大的Form
  • zookeeper系列(七)实战分布式命名服务
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 后端_MYSQL
  • 容器服务kubernetes弹性伸缩高级用法
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 手写一个CommonJS打包工具(一)
  • 推荐一个React的管理后台框架
  • 我这样减少了26.5M Java内存!
  • - 转 Ext2.0 form使用实例
  • 白色的风信子
  • postgresql行列转换函数
  • 进程与线程(三)——进程/线程间通信
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • !!java web学习笔记(一到五)
  • ###C语言程序设计-----C语言学习(3)#
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (02)Unity使用在线AI大模型(调用Python)
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (万字长文)Spring的核心知识尽揽其中