本文旨在介绍移动端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. JS教程:从0开始

    一. JS简介 1. JavaScript概述 JavaScript 是世界上最流行的编程语言.这门语言可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑.平板电脑和智能手机等设备. ...

  2. Python爬虫入门教程 59-100 python爬虫高级技术之验证码篇5-极验证识别技术之二

    图片比对 昨天的博客已经将图片存储到了本地,今天要做的第一件事情,就是需要在两张图片中进行比对,将图片缺口定位出来 缺口图片 完整图片 计算缺口坐标 对比两张图片的所有RBG像素点,得到不一样像素点的 ...

  3. Quartz.Net学习笔记

    一.概述 Quartz.NET是一个强大.开源.轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于winform和asp.net应用中.它灵 ...

  4. .net mvc前台如何接收和解析后台的字典类型的数据

    很久没有写博客了,最近做了一个公司门户网站的小项目,其中接触到了一些我不会的知识点,今日事情少,便记录一下,当时想在网上搜索相关的内容,但是没有找到. 今天想记录一下这样一个小的需求的做法.先说一下我 ...

  5. 《Jave并发编程的艺术》学习笔记(1-2章)

    Jave并发的艺术 并发编程的挑战 上下文切换 CPU通过时间片分配算法来循环执行任务,当前时间片执行完之后会切换到下一个任务.但是,切换会保存上一个任务的状态,一遍下次切换回这个任务时,可以再次加载 ...

  6. Android新手引导库推荐

    本文同步至http://javaexception.com/archives/31 介绍一波新手引导层的库.都是star数挺高的一些库. 1.NewbieGuide(国内开发者开发) Android ...

  7. 事务及其特性ACID

    一.事务的定义 事务是一组单元化的操作,这组操作可以保证要么全部成功,要么全部失败(只要有一个失败的操作,就会把其他已经成功的操作回滚). 一般所说的数据库事务,它是访问并可能更新数据库中各种数据项的 ...

  8. python3 字符编码与转码的理解

    额...上通识课讲到了NLP12条,感觉讲的挺好的,照着抄一条先... 1,没有两个人是一样的 没有两个人的人生经验会完全一样,所以没有两个人的信念,价值和规条系统会是一样. 因此没有两个人对同一件事 ...

  9. HNOI2019 苟命记

    Day0 瞎看了看博客,然后看了看wf题,看了一下午柯南剧场版... 后来发现,复习根本没用,因为我根本没学过. Day1 首先随便看了看三道题,觉得 \(T1\) 挺可做的,\(T2\) 看起来是什 ...

  10. C语言多线程的一个简单例子

    多线程的一个简单例子: #include <stdio.h> #include <stdlib.h> #include <string.h> #include &l ...