php+ajax实现无刷新数据分页的办法


Posted in PHP onNovember 02, 2015

本文实例讲述了php+ajax实现无刷新分页的方法。分享给大家供大家参考。具体实现方法如下:

index.php 文件,代码如下:

<?php 
header("Content-type: text/html;charset=GBK");//输出编码,避免中文乱码 
?> 
<html> 
<head> 
<title>ajax分页演示</title> 
<script language="javascript" src="ajaxpg.js"></script> 
<link rel="stylesheet" type="text/css" href="page.css"> 
</head> 
<body> 
<div id="result"> 
<?php 
$page=isset($_GET['page'])?intval($_GET['page']):1; //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。 
$num=3; //每页显示10条数据 
 
$db=mysql_connect("localhost","root","123456"); //创建数据库连接 
mysql_select_db("demo",$db) or die("数据库链接错误"); //选择要操作的数据库 
mysql_query("set names gbk"); 
/* 
首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是 
总数据库除以每页显示的条数,有余进一。 
也就是说10/3=3.3333=4 有余数就要进一。 
*/ 
 
$result=mysql_query("select * from brand"); 
$total=mysql_num_rows($result); //查询所有的数据 
 
$url='test.php';//设置ajax提交页面地址的URL,这里设置成test.php通过ajax把参数传递给test.php再把处理过的内容赋值到本页的div id=result。 
//页码计算 
$pagenum=ceil($total/$num);//获得总页数,也是最后一页 
$page=min($pagenum,$page);//获得首页 
$prepg=$page-1;//上一页 
$nextpg=($page==$pagenum ? 0 : $page+1);//下一页 
$offset=($page-1)*$num; //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。 
$pagenav="<ul>"; 
 
//开始分页导航条代码: 
$pagenav.="<li>显示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 条记录</li><li>共 $total 条记录 </li>"; 
 
//如果只有一页则跳出函数: 
if($pagenum<=1) return false; 
 
$pagenav.="<li> <a href=javascript:dopage('result','$url?page=1');>首页</a></li> "; 
if($prepg) $pagenav.="<li> <a href=javascript:dopage('result','$url?page=$prepg');>前页</a></li> "; else $pagenav.=" <li>前页</li> "; 
if($nextpg) $pagenav.="<li><a href=javascript:dopage('result','$url?page=$nextpg');>后页</a> </li>"; else $pagenav.=" <li>后页</li> "; 
$pagenav.="<li> <a href=javascript:dopage('result','$url?page=$pagenum');>尾页</a></li> "; 
$pagenav.="<li>第 $page 页</li><li>共 $pagenum 页</li></ul>"; 
 
//假如传入的页数参数大于总页数,则显示错误信息 
If($page>$pagenum){ 
 Echo "Error : Can Not Found The page ".$page; 
 Exit; //开源软件:phpfensi.com 
} 
?></div><div id="results"> 
<?php 
 echo $pagenav;//输出分页导航 
?> 
</div> 
</body> 
</html>

css代码:

/* CSS Document */ 
/* CSS Document */ 
#result ul li{ 
height:20px; 
width:auto; 
display:block; 
color:#999; 
border:1px solid #999; 
float:left; 
list-style:none; 
font-size:12px; 
margin-left:5px; 
line-height:20px; 
vertical-align:middle; 
text-align:center; 
} 
#result ul li a:link{ 
width:50px; 
height:20px; 
display:block; 
line-height:20px; 
background:#09C; 
border:1px solid #fff; 
color:#fff; 
text-decoration:none; 
} 
#result ul li a:hover{ 
width:50px; 
height:20px; 
display:block; 
line-height:20px; 
background:#09C; 
border:1px solid #fff; 
color:#F60; 
text-decoration:none; 
}

ajaxpg.js文件,如下:

// JavaScript Document 
var http_request=false; 
 function send_request(url){//初始化,指定处理函数,发送请求的函数 
 http_request=false; 
//开始初始化XMLHttpRequest对象 
if(window.XMLHttpRequest){//Mozilla浏览器 
http_request=new XMLHttpRequest(); 
if(http_request.overrideMimeType){//设置MIME类别 
 http_request.overrideMimeType("text/xml"); 
} 
} 
else if(window.ActiveXObject){//IE浏览器 
try{ 
 http_request=new ActiveXObject("Msxml2.XMLHttp"); 
}catch(e){ 
 try{ 
 http_request=new ActiveXobject("Microsoft.XMLHttp"); 
 }catch(e){} 
} 
 } 
if(!http_request){//异常,创建对象实例失败 
window.alert("创建XMLHttp对象失败!"); 
return false; 
} 
http_request.onreadystatechange=processrequest; 
//确定发送请求方式,URL,及是否同步执行下段代码 
 http_request.open("GET",url,true); 
http_request.send(null); 
 } 
 //处理返回信息的函数 
 function processrequest(){ 
if(http_request.readyState==4){//判断对象状态 
 if(http_request.status==200){//信息已成功返回,开始处理信息 
 document.getElementById("results").style.display="none"; 
 document.getElementById(reobj).innerHTML=http_request.responseText; 
} 
else{//页面不正常 
 alert("您所请求的页面不正常!"); 
} 
} 
 } 
 function dopage(obj,url){ 
document.getElementById(obj).innerHTML="<font color='green' font-size='12'>正在读取数据...</font>"; 
send_request(url); 
reobj=obj; 
}

数据库文件,如下:

-- phpMyAdmin SQL Dump 
-- version 2.8.1 
-- 主机: localhost 
-- 服务器版本: 5.0.22 
-- PHP 版本: 5.2.12 
-- 
-- 数据库: `demo` 
-- 
-- -------------------------------------------------------- 
-- 
-- 表的结构 `brand` 
-- 
CREATE TABLE `brand` ( 
 `id` int(7) NOT NULL auto_increment, 
 `sp_brand` varchar(255) default NULL, 
 PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ; 
-- 
-- 导出表中的数据 `brand` 
-- 
INSERT INTO `brand` (`id`, `sp_brand`) VALUES (1, 'hello world'), 
(2, '你好'), 
(3, '恩'), 
(4, 'fdsafdsafdsa'), 
(5, 'fdsafdafdsafdas'), 
(6, 'fdsafdsa'), 
(7, 'fdsafdsafdas'), 
(8, '恩'), 
(9, '恩'), 
(10, '恩'), 
(11, '恩11'), 
(12, '恩'), 
(13, '恩'), 
(14, '恩'), 
(15, '恩'), 
(16, '恩'), 
(17, '恩'), 
(18, '恩18');

下面介绍这些文件的功能

ajaxpg.js:ajax无刷新核心文件,一般不要去作修改.

index.php:实现ajax无刷新的文件了,这里调用了ajaxpg.js文件,配置了mysql用户密码,要和自己本地的一致,以及显示分页的效果.

page.css:这是分页的CSS样式文件,用来美化的,就不多介绍了.

brand.sql:这是MYSQL数据库的文件了,进行导入到MYSQL数据库中,同样,如果不会导入,可以参考PHPfensi.com中如何导入.sql文章即可。

例子非常的简单大家只要按流程来操作就ok啦,希望这篇文章能帮助大家真正的实现php+ajax无刷新分页。

PHP 相关文章推荐
php URL跳转代码 减少外链
Jun 25 PHP
php继承的一个应用
Sep 06 PHP
实测在class的function中include的文件中非php的global全局环境
Jul 15 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
ThinkPHP表单自动提交验证实例教程
Jul 18 PHP
yii中widget的用法
Dec 03 PHP
php操作xml入门之cdata区段
Jan 23 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
PHP实现过滤掉非汉字字符只保留中文字符
Jun 04 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
Yii实现简单分页的方法
Apr 29 PHP
PHP+mysql实现从数据库获取下拉树功能示例
Jan 06 PHP
PHP中Http协议post请求参数
Nov 02 #PHP
浅谈PHP中foreach/in_array的使用
Nov 02 #PHP
php防止用户重复提交表单
Nov 02 #PHP
windows8.1下Apache+Php+MySQL配置步骤
Oct 30 #PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 #PHP
php三种实现多线程类似的方法
Oct 30 #PHP
php搜索文件程序分享
Oct 30 #PHP
You might like
php面向对象全攻略 (三)特殊的引用“$this”的使用
2009/09/30 PHP
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
jquery中的mouseleave和mouseout的区别 模仿下拉框效果
2012/02/07 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
iview日期控件,双向绑定日期格式的方法
2018/03/15 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
python基于socket实现网络广播的方法
2015/04/29 Python
Python中字符串的格式化方法小结
2016/05/03 Python
python实现发送邮件及附件功能
2021/03/02 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
CSS3中Color的一些特性介绍
2012/05/27 HTML / CSS
传统软件工程与面向对象的软件工程有什么区别
2012/05/31 面试题
大一自我鉴定范文
2013/10/04 职场文书
受欢迎的大学生自我评价
2013/12/05 职场文书
硕士研究生自我鉴定范文
2013/12/27 职场文书
大二自我鉴定
2014/01/31 职场文书
运动会跳远广播稿
2014/02/04 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
2015入党自荐书范文
2015/03/05 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
新闻通讯稿范文
2015/07/22 职场文书