首先说清楚什么是分页查询。
分页查询就是将数据库中的查询结果在程序中进行分页显示(如果不进行分页的话,将数据库中上万条的数据都显示出来,那么一个页面就过于臃肿了,而且效率很成问题)。
分页查询要实现的功能包括:限制每页显示的个数、翻页(上一页、下一页)、跳转(转至XXX页)等。
很多web开发的初学者对分页查询的实现感到非常痛苦(包括我自己),因为它实在太繁琐了,有很多的全局变量要考虑,包括查询结果总条数totalCount、每页显示个数limit、当前所在页数page、总页数pageCount、当前页起始条目序号start等,而且每个参数之间都有千丝万缕的联系,一个不小心就弄错了。
在解决这个问题前最重要的是弄清楚这些参数之间的关系,找出它们的最小覆盖(通过最少的参数,把其他的参数都求出来),同时尽量全局变量的单一职责原则(系统状态变化所需改变的全局变量的个数越少越好,一个全局变量控制系统的一种状态)。
在许多场合,尤其是B/S架构的富客户端开发中,我们需要用Ajax来实现分页,以达到较好的用户体验与较高的效率。
经过一段时间的摸索,找出了一种个人觉得比较好用的Ajax分页查询实现方法。下面是例子,欢迎大侠们拍砖。提供源码下载,稍微再封装一下,使用还是挺方便的。
Js如下:
///////////////////////////
// 定义全局变量 //
///////////////////////////
var totalCount; //文件列表长度
var start; //文件列表当前索引
var limit; //每页显示个数
var first; //是否为第一次查询
///////////////////////////
// 页面控制部分 //
///////////////////////////
//上一页
function prePage(){
}
//下一页
function nextPage(){
}
//跳转
function goToPage(){
}
//修改每页显示数
function setLimit(value){
}
//控制按钮显示
function buttomDisplay(){
}
//页面初始化
function init(){
first = true;
start = 0;
limit = 20;
document.getElementById("limit").value = 20;
getList();
}
window.onload = init;
///////////////////////////
// 模拟Ajax部分 //
///////////////////////////
//模拟Ajax,服务器返回分页查询结果
function getList(){
if(first){
//如果是第一次查询,则访问服务器,获取记录总数
getCount();
first = false;
}
//将查询结果转换为HTML,并显示
……
//修改当前页码
document.getElementById("page").innerHTML= parseInt(start/limit +1);
buttomDisplay();
}
//模拟Ajax,服务器返回totalCount
function getCount(){
totalCount = sqlGetCount();
//修改总页数
document.getElementById("pageCount").innerHTML = Math.ceil(totalCount /limit);
}
/////////////////////////////
// 模拟服务器部分 //
/////////////////////////////
//数据库查询(select * from xxx where yyy)
function sqlGetList(sqlStart,sqlLimit){
//模拟sql查询,返回分页查询结果
var result = [];
……
return result;
}
//获取查询结果总条数(select count(*) from xxx where yyy)
function sqlGetCount(){
//模拟sql查询,返回记录条数
return 300;
}
对应的HTML如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>分页查询</title>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<script src="js/paging.js" type="text/javascript"></script>
</head>
<body>
<div id="container" align="center">
<div id="header">
<h1>分页查询例子</h1>
</div>
<div id="mainContainer">
<div id="list">
</div>
<div id="paging">
<table width="80%">
<tr>
<td><input type="button" value="上一页" id="pre" onClick="prePage()" /></td>
<td> 第<span id="page">1</span>页/共<span id="pageCount"></span>页</td>
<td>第<input type="text" id="goto" name="goto" value="1" size="2" />页<input type="button" value="跳转" onclick="goToPage()"/></td>
<td>每页显示<select id="limit" name="limit" onChange="setLimit(this.value)" >
<option value="10" >10</option>
<option value="20">20</option>
<option value="30" >30</option></select>个</td>
<td><input type="button" value="下一页" id="next" onClick="nextPage()"/></td>
</tr>
</table>
</div>
</div>
<div id="footer">
<span>Copyright 2010 Technicolor</span>
</div>
</div>
</body>
</html>
分享到:
相关推荐
【标题】"Ajax分页查询完美示例"主要展示了如何在Web应用中使用Ajax技术实现动态、无刷新的分页查询功能。Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下更新部分网页内容的技术,它...
在网页开发中,"Ajax分页查询+Div透明遮盖"是两个常见的技术点,用于提升用户体验和页面交互性。让我们分别深入探讨这两个概念。 **Ajax分页查询** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个...
下面将详细讲解kkpager如何实现Ajax分页查询功能及其前后台代码的实现。 首先,我们来看一下前端部分的HTML和JavaScript代码。HTML部分主要包含两个部分:一个用于展示数据的div(id为"mainContent")和一个用于...
**Ajax分页查询**是网页应用中常见的技术,主要用于实现用户在不刷新整个页面的情况下获取并展示大量数据的分块加载。在这个场景中,我们并未使用MyBatis的分页插件,而是通过纯JavaScript(可能配合jQuery)和...
"基于Ajax实现的分页查询"是一种现代的、异步的技术,它使得页面无需刷新即可更新内容,极大地提高了交互性。下面将详细介绍Ajax在分页查询中的应用及实现过程。 一、Ajax基础 Ajax(Asynchronous JavaScript and ...
Ajax分页查询则是通过前端向服务器发送异步请求,获取指定页码的数据,然后更新DOM(Document Object Model)中的相应部分,而无需刷新整个页面。这一过程主要包括以下几个步骤: 1. **初始化页面**:设置当前页数...
jquery无刷新分页、排序 利用jquery实现的ajax无刷新分页以及排序,支持多种格式无刷新更换,数据库采用的是Sql2000自带的NorthWind数据库 数据库控制使用的是SqlHelper
在Service层,利用MyBatis的PageHelper或者JPA的Pageable接口进行分页查询。例如,使用PageHelper: ```java @Service public class UserService { public Page<User> getPageUsers(int pageNum, int pageSize...
总结来说,实现Java AJAX分页和JSP分页涉及前后端的协作。前端通过AJAX与后端通信,后端处理请求并从数据库获取数据,然后将数据返回给前端,前端再更新页面内容。这个过程提升了用户体验,使得浏览大数据集变得更加...
**Ajax分页原理:** Ajax分页的基本原理是通过JavaScript异步发送HTTP请求到服务器,请求只获取当前页所需的数据,然后在客户端用JavaScript动态地将这些数据插入到网页中。这样用户可以在浏览页面时保持交互性,而...
**jQuery AJAX分页技术详解** 在Web开发中,分页是一种常见的数据展示方式,它能够有效地组织大量数据,提高页面加载速度,优化用户体验。jQuery,一个轻量级、功能丰富的JavaScript库,结合AJAX(异步JavaScript和...
在Asp.net中,我们可以使用多种方式实现Ajax分页,如jQuery的Ajax功能、ASP.NET AJAX Control Toolkit中的Paging控件,或者自定义Ajax分页组件。这里我们将主要讨论使用jQuery Ajax和Asp.net MVC或Web Forms的方式。...
php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax分页php+ajax...
**Ajax分页技术详解** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。在网页应用中,分页是一个常见的功能,特别是在数据量庞大的时候,分页可以帮助...
AJAX分页查询是现代Web开发中常见的技术应用,用于实现在不刷新页面的情况下,从服务器获取并显示数据的连续多页。下面详细介绍使用AJAX实现分页查询的步骤与方法。 首先,要实现AJAX分页查询,需要有以下几个基本...
在实现ASP的AJAX无刷新分页过程中,我们将主要关注以下几个关键点: 1. **AJAX请求**:使用JavaScript的XMLHttpRequest对象或者更现代的fetch API,向服务器发送异步请求,获取分页数据。例如,当用户点击分页按钮...
在IT行业中,Ajax分页是一种常见且高效的数据加载方式,特别是在网页应用中,它能够提供流畅的用户体验,而无需每次用户交互时都刷新整个页面。本篇将详细讲解如何使用SSH(Spring、Struts2、Hibernate)框架结合...