本文旨在介绍移动端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之分页查询实现的更多相关文章

  1. JdbcTemplate+PageImpl实现多表分页查询

    一.基础实体 @MappedSuperclass public abstract class AbsIdEntity implements Serializable { private static ...

  2. 用Hibernate和Struts2+jsp实现分页查询、修改删除

    1.首先用get的方法传递一个页数过去 2.通过Struts2跳转到Action 3.通过request接受主页面index传过的页数,此时页数是1, 然后调用service层的方法获取DAO层分页查 ...

  3. MySQL、Oracle和SQL Server的分页查询语句

    假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql.Oracle和SQL Server分页查询student表. 1.Mysql的分页查询: SELECT * FROM s ...

  4. 分页查询和分页缓存查询,List<Map<String, Object>>遍历和Map遍历

    分页查询 String sql = "返回所有符合条件记录的待分页SQL语句"; int start = (page - 1) * limit + 1; int end = pag ...

  5. mysql 分页查询

    mysql,; : mysql,; -last. //如果只给定一个参数,它表示返回最大的记录行数目: mysql; 个记录行 ,n. 动态传参的分页查询 SELECT * FROM table LI ...

  6. MongoDB 分页查询的方法及性能

    最近有点忙,本来有好多东西可以总结,Redis系列其实还应该有四.五.六...不过<Redis in Action>还没读完,等读完再来总结,不然太水,对不起读者. 自从上次Redis之后 ...

  7. .NET平台开源项目速览(7)关于NoSQL数据库LiteDB的分页查询解决过程

    在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑) 与 .NET平台开源项目速览(3)小巧轻量级NoSQL文件数据库LiteDB中,介绍了LiteDB的基本使用情况以及部 ...

  8. SubSonic3.0插件分页查询速度测试

    使用SubSonic3.0一段时间了,一直都想找机会测试一下各种查询分页速度,对比一下插件的查询效率到底怎么样,所以昨天写好了测试程序,准备好1K.1W.10W.50W和100W记录的数据表,早上详细 ...

  9. Node.js、express、mongodb 实现分页查询、条件搜索

    前言 在上一篇Node.js.express.mongodb 入门(基于easyui datagrid增删改查) 的基础上实现了分页查询.带条件搜索. 实现效果 1.列表第一页. 2.列表第二页 3. ...

随机推荐

  1. 死磕 java集合之SynchronousQueue源码分析

    问题 (1)SynchronousQueue的实现方式? (2)SynchronousQueue真的是无缓冲的吗? (3)SynchronousQueue在高并发情景下会有什么问题? 简介 Synch ...

  2. 一行代码实现数组去重(ES6)

    ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数,如: let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3]; ...

  3. ES 11 - 配置Elasticsearch的映射 (mapping)

    目录 1 映射的相关概念 1.1 什么是映射 1.2 映射的组成 1.3 元字段 1.4 字段的类型 2 如何配置mapping 2.1 创建mapping 2.2 更新mapping 2.3 查看m ...

  4. java数据结构和算法02(栈)

    什么叫做栈(Stack)呢?这里的栈和jvm的java栈可不是一个东西... 栈作为一种数据结构,我感觉栈就类似一种接口,实现的话有很多种,比如用数组.集合.链表都可以实现栈的功能,栈最大的特点就是先 ...

  5. git程序多版本维护方案

    目前所在公司开发的系统为一个基础版本(通用版)包含了行业内一些基础功能实现,后期根据不同厂家进行定制版的开发,考虑独立项目的话代码维护不太方便,并且如果通用版本有变动的话,其他定制版本也都需要进行变动 ...

  6. docker同时删除多个容器

    查询所有容器 sudo docker ps -a 同时删除多个符合筛选条件的容器,例如删除状态为“exited”的容器 docker rm $(docker container ls -f " ...

  7. js 原型,原型链,原型链继承浅析

    对于网上的关于原型,原型链和原型链继承的晦涩语言说明就不累赘了,复制粘贴过来再解释一遍怕自己也整蒙了,本人最怕空气突然安静,四目对视,大眼对小眼,一脸懵逼. 我们先看下面

  8. string转QBytearray

    最近在程序中遇到要把图片的二进制string存成图片到本地,其实就是写文件 structCameraInfo tmpCameraInfo; string strData = tmpCalibrateR ...

  9. 阿里云或本地部署服务器(一)---nginx本地和服务器代理

    具体步骤: 1.nginx下载 2.在G:\nginx-1.15.8\conf/nginx.conf改三处路径:nginx.conf 文件中配置的路径和端口要映射到vue项目工程 a.改 映射端口: ...

  10. SQL基础语法

    数据库: 结构化查询语言(Structured Query Language)简称SQL: 数据库管理系统(Database Management System)简称DBMS: 数据库管理员(Data ...