weUI之分页查询实现
本文旨在介绍移动端h5分页查询实现
1.前端html
前端基于weui 样式库实现 参考http://jqweui.com/
<div class="weui-search-bar" id="searchBar">
<form class="weui-search-bar__form">
<div class="weui-search-bar__box">
<i class="weui-icon-search"></i>
<input type="search" class="weui-search-bar__input" id="searchInput" placeholder="搜索您想要的商品" required=required />
<a href="javascript:" class="weui-icon-clear" id="searchClear"></a>
</div>
<label class="weui-search-bar__label" id="searchText" style="transform-origin: 0px 0px 0px; opacity: 1; transform: scale(1, 1);">
<i class="weui-icon-search" id="search"></i>
<span>搜索您想要的商品</span>
</label>
</form>
<button type="button" class="btn btn-info btn-xs" style="margin-left:5px" id="btn-search">搜索</button> </div>
2.js前端分页
//全局变量
var load = false; // load为判断接口是否请求完成,防止多次触摸、多次点击导致接口的多次请求出错
var page = 1;//默认第一页 $(function () {
getData(page, "/Home/GetProListJson"); //初始化数据从第一页数据开始请求
}); //请求后台数据
function getData(page, url) { //请求接口的方法,方法带page,url两个参数。
$('#more').text('正在加载中...');
$.ajax({
url: url, //请求接口的url
type: 'get',//请求方式(post或get)默认为get
async: true, //默认情况下是true表示所有请求为异步请求,如果要为同步则用false
cache: false,//默认为false,设置为false将不会从浏览器缓存中加载请求信息。
dataType: "json",
data: {
'page': page,
'limit': 6,
'name': $("#searchInput").val()
},
success: function (data) { //请求成功调用的回调函数
if (data.code == 0) {
$("#pageNum").val(parseInt(data.currentPage) + 1);
showList(data);
if (data.currentPage >= data.totalPage) { //这里判断接口数据是否到底部
load = true;
$("#more").html('已经到底了');
} else if (data.currentPage < data.totalPage) {
load = false;
$("#more").html('查看更多');
}
}
},
error: function (error) { //请求失败调用的回调函数
console.log(error);
}
});
}
//显示数据
function showList(data) { //显示列表的html内容
for (var i = 0; i < data.list.length; i++) {
var html = "<li>"
html += "<a href='/Home/ProInfo?id=" + data.list[i].Goods_Id + "'>"
html += " <div class='proimg'><img src='" + data.list[i].Img_Url + "' /></div>";
html += " </a>";
html += " <div class='protxt'>";
html += " <div class='name'>" + data.list[i].Goods_Name + "</div>";
html += " <div class='wy-pro-pri'>¥<span>" + data.list[i].Goods_Price + "</span></div>";
html += "</div>";
html += "<div class='button_sp_area'><a href='javascript: ;' class='weui-btn weui_btn_mini weui-btn_primary' id='btn-mianfei'>免费领取</a></div>";
$("#goodslist").append(html); }
}
//继续加载按钮事件 ,点击按钮后请求换页的数据
$(document).on("click", '#more', function () {
if (load == false) {
$("#goodslist").append(html);
load = true;
$("#pageNum").val(1);
page = $("#pageNum").val();
getData(page, "/Home/GetProListJson");
}
})
//搜索功能
$(document).on("click", "#btn-search", function () {
if (load == false) {
$("#goodslist").empty();
load = true;
$("#pageNum").val(1);
page = $("#pageNum").val();
getData(page, "/Home/GetProListJson");
}
}); //==============核心代码=============
//鼠标向下滚动加载下一页数据,或者移动端向下滑动加载下一页数据
var winH = $(window).height(); //页面可视区域高度
var scrollHandler = function () {
var pageH = $(document.body).height();
var scrollT = $(window).scrollTop(); //滚动条top
var aa = (pageH - winH - scrollT) / winH;
if (aa < 0.02) {//0.02是个参数
if (load == false) {
load = true;
page = $("#pageNum").val();
getData(page, "/Home/GetProListJson");
} }
}
//定义鼠标滚动事件
$(window).scroll(scrollHandler);
3.后端数据接口
后端实现比较简单,只要注意返回json数据格式的定义,这里只介绍下控制器实现代码
[HttpGet]
public ActionResult GetProListJson(Pagination pagination)
{
var ret = new
{
code = ,
msg = "",
list = goodsApp.GetList(Request["name"], pagination),
currentPage = pagination.page,
count = pagination.total,
totalPage= pagination.total/pagination.limit
};
return Content(ret.ToJson());
}
4.总结
1.首先定义请求参数,这里面参数是{'page': page,limit': 6,'name': $("#searchInput").val()}
2.确定哪些参数是从页面获取,比如这里面查询参数name;确定哪些参数是动态变化的,这里面是page
3.页面状态的变化,比如在这有两种状态,数据已加载完和未加载完
4.还有js方法的封装,注意单一职能原则,毕竟js也是面向对象的语言
weUI之分页查询实现的更多相关文章
- JdbcTemplate+PageImpl实现多表分页查询
一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...
- 用Hibernate和Struts2+jsp实现分页查询、修改删除
1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...
- MySQL、Oracle和SQL Server的分页查询语句
假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...
- 分页查询和分页缓存查询,List<Map<String, Object>>遍历和Map遍历
分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = pag ...
- mysql 分页查询
mysql,; : mysql,; -last. //如果只给定一个参数,它表示返回最大的记录行数目: mysql; 个记录行 ,n. 动态传参的分页查询 SELECT * FROM table LI ...
- MongoDB 分页查询的方法及性能
最近有点忙,本来有好多东西可以总结,Redis系列其实还应该有四.五.六...不过<Redis in Action>还没读完,等读完再来总结,不然太水,对不起读者. 自从上次Redis之后 ...
- .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...
- SubSonic3.0插件分页查询速度测试
使用SubSonic3.0一段时间了,一直都想找机会测试一下各种查询分页速度,对比一下插件的查询效率到底怎么样,所以昨天写好了测试程序,准备好1K.1W.10W.50W和100W记录的数据表,早上详细 ...
- Node.js、express、mongodb 实现分页查询、条件搜索
前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...
随机推荐
- 页面性能优化-原生JS实现图片懒加载
在项目开发中,我们往往会遇到一个页面需要加载很多图片的情况.我们可以一次性加载全部的图片,但是考虑到用户有可能只浏览部分图片.所以我们需要对图片加载进行优化,只加载浏览器窗口内的图片,当用户滚动时,再 ...
- CentOS7搭建本地YUM仓库,并定期同步阿里云源
CentOS7同步阿里云镜像rpm包并自建本地yum仓库 系统环境 # cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) # u ...
- 操作系统底层原理与Python中socket解读
目录 操作系统底层原理 网络通信原理 网络基础架构 局域网与交换机/网络常见术语 OSI七层协议 TCP/IP五层模型讲解 Python中Socket模块解读 TCP协议和UDP协议 操作系统底层原理 ...
- Netty4.x整合SpringBoot2.x使用Protobuf3详解
前言 本篇文章主要介绍的是SpringBoot整合Netty以及使用Protobuf进行数据传输的相关内容.Protobuf会介绍下用法,至于Netty在netty 之 telnet HelloWor ...
- TensorFlow从1到2(七)线性回归模型预测汽车油耗以及训练过程优化
线性回归模型 "回归"这个词,既是Regression算法的名称,也代表了不同的计算结果.当然结果也是由算法决定的. 不同于前面讲过的多个分类算法或者逻辑回归,线性回归模型的结果是 ...
- 带着新人看java虚拟机06(多线程篇)
其实多线程还有很多的东西要说,我们慢慢来,可能会有一些东西没说到,那就没办法了,只能说尽量吧! 1.synchronized关键字 说到多线程肯定离不开这个关键字,为什么呢?因为多线程之间虽然有各自的 ...
- [翻译 EF Core in Action 1.6]你的第一个EF Core应用程序
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...
- C#删除字符串最后一个字符
例:字符串 string str="2,3,5,7,9," 去掉最后一个逗号 ","; 常用的方法: 1.SubString()方法 str=str.SubSt ...
- 教你如何一键反编译获取任何微信小程序源代码(图形化界面,傻瓜式操作)
一键获取微信小程序源代码 Tips: 一键获取微信小程序源码, 使用了C#加nodejs制作 直接解压在D盘根目录下后就可以使用 将小程序文件放到 wxapkg目录下3 这个目录下有一些demo 可以 ...
- Android中对已安装应用的管理实现
获取.管理手机中已安装的所有应用信息 1.创建应用的实体类AppInfo,属性有应用的名称.包名.图标.第一次安装时间和版本名称 public class AppInfo { private Stri ...