Ajax 实现无刷新分页

11 篇文章 0 订阅

注:本文中使用到的一些类库在前面文章都能找到源代码,我会在文中指明链接所在,为了缩短文章篇幅,由此带来的阅读不便,敬请谅解。

本文讲解 Ajax 实现无刷新分页、实现原理、代码展示、代码下载。

这里需要说明一些知识:

1、Ajax 无刷新页面的好处:提供良好的客户体验,通过 Ajax 在后台从数据库中取得数据并展示,取缔了等待加载页面而出现的空白状态;

2、那么,Ajax 无刷新页面是运行在动态页面(.php)?还是静态页面(.html/.htm/.shtml)?答案是:静态页面;

3、实现原理:通过前端 JS 脚本程序与 Ajax 相结合取得从动态页面返回的数据,并显示。

好了,下面进行代码讲解:

既然,是运行在静态页面上,我们首先先创建一个静态 HTML 页面,index.html 的代码清单如下。

index.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/ajax.js"></script> <!-- 载入 Ajax 类库 -->
<title>Ajax 实现无刷新页面</title>
<style type="text/css">
	body {
		font-size:12px;	
	}
</style>
</head>
<body>
	<div id="fpage">数据加载中...</div>
</body>
</html>

代码清单中,我们加载了一个 Ajax 类库,这个类库可以在 http://blog.csdn.net/liruxing1715/article/details/7212781 文章中找到(并附有使用方法)

在这个静态页面中,只会显示一个“数据加载中....”,并没有任何数据。这时,我们就需要一个 JS 脚本来实现通过 Ajax 从数据库中获取数据。JS 脚本如下:

<script type="text/javascript">
	/**
 	* setPage(url) 根据 url 从 article.php 中获取数据
	* @param int pageNum 页码
	* @return string
	*/
	var cache=new Array(); // 缓存变量,当数据被访问过之后放置在缓存中,加快访问速度
	function setPage(pageNum) {
		var fpage = document.getElementById('fpage'); // 获取 fpage 对象
		// 如果缓存中存在数据,那么直接从缓存中读取;如果不存在数据,那么就从数据库中读取,并把数据存入缓存
		if (typeof(cache[pageNum])=='undefined') {
			var ajax = Ajax();
			ajax.get('article.php?page='+pageNum, function(data){
				fpage.innerHTML = data; // fpage对象的内容是从 article.php 中取来的
				cache[pageNum] = data;
			})
		} else {
			fpage.innerHTML = cache[pageNum];
		}
	}
	setPage(1); // 默认执行
</script>

仔细阅读上面的代码,您会发现下面现象:

1、setPage(pageNum) 是一个从数据库中提取数据的 JS 函数接口;

2、Ajax 是通过 article.php 文件来获取数据;

3、article.php?page=xx,这里的 xx 就是所要取得的页码数据,

setPage(1):就是取得第1页数据;

setPage(2):就是取得第2页数据;

setPage(100):就是取得第100页数据;

……

那么,如何从 article.php 文件中取得数据呢?请看下面代码清单。

article.php

<?php
/**
* $Id: article.php
* author Lee.
* Last modify $Date: 2012-01-21 16:53:05 $
*/
require_once './config.inc.php';
$m = new Model();
$page = new ajaxPage($m->total('article'),20); // $m->total('article') 获取 article 表的记录数;10为每页显示十条
$result = $m->fetchAll('article', '*', '', '', $page->limit); // 取出数据,^_^,很方便吧
echo '<table align="center" border="1" width="1100" style="border-collapse:collapse;font-size:14px;" bordercolor="#666">';
echo '<caption><h1>华强电子网资讯</h1></caption>';
echo '<tr height="25"><th>ID</th><th>Title</th><th>Author</th><th>Source</th><th>Date</th></tr>';
foreach ($result as $v) {
	echo "<tr height='21'><td align='center'>{$v['id']}</td><td>{$v['title']}</td><td align='center'>{$v['author']}</td><td align='center'>{$v['source']}</td><td align='center'>{$v['date']}</td></tr>";
}
echo '<tr><td align="right" colspan="5">'.$page->fpage().'</td></tr>';
echo '</table>';
?>

article.php 中连接的数据是前面文章从华强电子网抓来的资讯数据,因为数据比较大,代码打包下载中会附加 article.sql 文件,以便大家测试。

静态页面 index.html 上显示的数据就是 article.php 文件中 echo 的代码。

代码文件中的 config.inc.php 文件主要就是定义一些常量,比如:数据库用户名、数据库密码、主机……,数据库连接类库(Db.class.php)和数据库操作类库(Model.class.php),请参考文章 http://blog.csdn.net/liruxing1715/article/details/7176671,附有使用方法。

程序效果图:

下图标注的是注意关注的地方。

这样,Ajax 无刷新分页就完成了。程序中还有一个 ajaxPage.class.php 没有说明,其实,这个 ajaxPage 类库的使用方法和一般的分页类库是一样的。

即:$page = new ajaxPage(记录总数, 每页显示数);

具体细节请大家下载代码阅读即可。

代码打包下载:【点击下载】 密码:【3gqk】 注:请留下电子邮箱。


  • 26
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 61
    评论
### 回答1: 实现分页操作一般需要以下步骤: 1. 在 HTML 页面中创建分页控件,包括上一页、下一页、页码等元素。 2. 使用 AJAX 技术向服务器发送分页请求,获取数据。 3. 将获取到的数据显示在页面上,替换原来的数据。 以下是一个简单的 HTML AJAX 分页实现示例: HTML 代码: ``` <div id="data"></div> <div id="pagination"></div> ``` JavaScript 代码: ``` var currentPage = 1; var totalPage = 10; function loadData(page) { $.ajax({ url: 'data.php', type: 'GET', data: {page: page}, success: function(data) { $('#data').html(data); } }); } function loadPagination() { var html = ''; if (currentPage > 1) { html += '<a href="#" onclick="loadData(' + (currentPage - 1) + ')">上一页</a>'; } for (var i = 1; i <= totalPage; i++) { if (i == currentPage) { html += '<span>' + i + '</span>'; } else { html += '<a href="#" onclick="loadData(' + i + ')">' + i + '</a>'; } } if (currentPage < totalPage) { html += '<a href="#" onclick="loadData(' + (currentPage + 1) + ')">下一页</a>'; } $('#pagination').html(html); } $(document).ready(function() { loadData(currentPage); loadPagination(); }); ``` 在这个示例中,loadData() 函数用于向服务器发送分页请求,并将获取到的数据显示在页面上,loadPagination() 函数用于生成分页控件的 HTML 代码,并将其插入到页面中。在页面加载完成后,通过调用这两个函数来初始化分页操作。 当用户点击分页控件中的上一页、下一页或页码时,会触发相应的 AJAX 请求,重新加载数据并更新分页控件。在服务器端,需要根据请求参数来返回相应的数据,具体实现可以参考后端语言的相关文档。 ### 回答2: HTML是一种标记语言,用于搭建网页结构和内容布局,并使用标签来描述网页的各个部分。AJAX(Asynchronous JavaScript and XML)是一种用于在不刷新整个页面的情况下与服务器进行异步通信的技术。 实现HTML AJAX分页操作可以提供更好的用户体验和网页性能优化。以下是实现步骤: 1. 在HTML中创建一个容器,用于显示分页数据。 2. 使用AJAX技术与服务器进行通信,发送分页请求。可以使用XMLHttpRequest对象或jQuery提供的AJAX方法。 3. 在后台服务器端,接收到分页请求后,根据请求的参数,从数据库中获取对应页数的数据。 4. 将获取到的数据返回给前端,可以使用JSON格式进行数据传输。 5. 在前端,通过AJAX的回调函数获取到服务器返回的数据。 6. 将返回的数据填充到HTML容器中,展示给用户。 7. 根据需求,可以添加上一页和下一页按钮,用于翻页操作。点击按钮时,再次发送对应页数的分页请求。 通过以上步骤,实现了HTML AJAX分页操作。用户可以通过页面上的翻页按钮,切换不同的页数,而无需整页刷新。这样可以减少数据传输量,提高页面加载速度,并提供更良好的用户体验。 ### 回答3: HTML和AJAX结合实现分页操作可以提供更流畅的用户体验和减少页面加载时间。下面我将介绍如何使用HTML和AJAX实现分页操作。 1. 创建HTML页面结构: 在HTML页面中首先创建一个显示数据的容器,可以是一个`<div>`标签或者`<table>`标签。同时,还需要创建一个分页导航栏,通常是一个`<ul>`标签。 2. 使用AJAX发送请求: 在JavaScript中使用AJAX发送异步请求获取分页数据。可以使用`XMLHttpRequest`对象或者`fetch`方法,向服务器端发送请求,同时传递当前页码和每页显示的数据量等参数。 3. 服务器端处理: 服务器端接收到请求后,根据传递的参数进行数据查询,并计算总页数。然后将查询结果以及总页数返回给客户端。 4. 客户端处理: 当客户端收到服务器端返回的数据后,使用JavaScript动态更新页面内容。可以使用DOM操作方法将数据插入到容器中,实现数据的显示。 5. 更新分页导航栏: 同时更新分页导航栏,可以根据总页数动态生成并添加页码按钮,通过点击不同的页码按钮切换显示的数据。 6. 添加事件监听: 为分页导航栏中的每个页码按钮添加点击事件监听器,当按钮被点击时,重新发送AJAX请求获取对应页码数据,并更新页面内容和当前页码。 通过以上步骤,我们可以实现基于HTML和AJAX分页操作。这样用户在浏览数据时可以方便地切换到不同的页码,同时也避免了每次切换页面都需要重新加载整个页面的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 61
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值