详解PHP+AJAX无刷新分页实现方法

前端技术 2023/09/04 PHP

PHP+AJAX无刷新分页实现代码详解,最近在看ajax 教程,就想写个简单入门的PHP+AJAX无刷新分页,我们依据ajax开发框架,代码如下:

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(reobj).innerHTML=http_request.responseText;
 }
 else{//页面不正常
 alert(\"您所请求的页面不正常!\");
 }
}
 }
 function dopage(obj,url){
document.getElementById(obj).innerHTML=\"正在读取数据...\";
send_request(url);
reobj=obj;
}

内容我放在一个div中显示,当翻页动作产生时,利用AJAX更新DIV达到翻页效果这是内容显示页面代码:

<?php
header(\"Content-type: text/html;charset=GBK\");//输出编码,避免中文乱码
?>
<html>
<head>
<title>ajax分页演示</title>
<scrīpt language=\"javascrīpt\" src=\"ajaxpg.js\"></scrīpt>
</head>
<body>
<div id=\"result\">
<?php
$page=isset($_GET[\'page\'])?intval($_GET[\'page\']):1;  //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
$num=10;          //每页显示10条数据
$db=mysql_connect(\"localhost\",\"root\",\"7529639\");   //创建数据库连接
mysql_select_db(\"cr_download\");     //选择要操作的数据库
/*
首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是
总数据库除以每页显示的条数,有余进一。
也就是说10/3=3.3333=4 有余数就要进一。
*/
$result=mysql_query(\"select * from cr_userinfo\");
$total=mysql_num_rows($result); //查询所有的数据
$url=\'test.php\';//获取本页URL
//页码计算
$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=\"显示第 <B>\".($total?($offset+1):0).\"</B>-<B>\".min($offset+10,$total).\"</B> 条记录,共 $total 条记录 \";
//如果只有一页则跳出函数:
if($pagenum<=1) return false;
$pagenav.=\" <a href=javascrīpt:dopage(\'result\',\'$url?page=1\');>首页</a> \";
if($prepg) $pagenav.=\" <a href=javascrīpt:dopage(\'result\',\'$url?page=$prepg\');>前页</a> \"; else $pagenav.=\" 前页 \";
if($nextpg) $pagenav.=\" <a href=javascrīpt:dopage(\'result\',\'$url?page=$nextpg\');>后页</a> \"; else $pagenav.=\" 后页 \";
$pagenav.=\" <a href=javascrīpt:dopage(\'result\',\'$url?page=$pagenum\');>尾页</a> \";
$pagenav.=\"</select> 页,共 $pagenum 页\";
//假如传入的页数参数大于总页数,则显示错误信息
If($page>$pagenum){
 Echo \"Error : Can Not Found The page \".$page;
 Exit;
}
$info=mysql_query(\"select * from cr_userinfo limit $offset,$num\"); //获取相应页数所需要显示的数据
While($it=mysql_fetch_array($info)){
 Echo $it[\'username\'];
 echo \"<br>\";
}                //显示数据
 echo\"<br>\";
 echo $pagenav;//输出分页导航
?>
</div>
</body>
</html>

翻页的关键就在于翻页时调用dopage()函数,接着利用回调信息来更新div中的内容,服务器端核心代码:

<?php
header(\"Content-type: text/html;charset=GBK\");//输出编码,避免中文乱码
$page=isset($_GET[\'page\'])?intval($_GET[\'page\']):1;  //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
$num=10;          //每页显示10条数据
$db=mysql_connect(\"localhost\",\"root\",\"7529639\");   //创建数据库连接
mysql_select_db(\"cr_download\");     //选择要操作的数据库
/*

首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是

总数据库除以每页显示的条数,有余进一。

也就是说10/3=3.3333=4 有余数就要进一。

*/

$result=mysql_query(\"select * from cr_userinfo\");
$total=mysql_num_rows($result); //查询所有的数据
$url=\'test.php\';//获取本页URL
//页码计算
$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=\"显示第 <B>\".($total?($offset+1):0).\"</B>-<B>\".min($offset+10,$total).\"</B> 条记录,共 $total 条记录 \";
//如果只有一页则跳出函数:
if($pagenum<=1) return false;
$pagenav.=\" <a href=javascrīpt:dopage(\'result\',\'$url?page=1\');>首页</a> \";
if($prepg) $pagenav.=\" <a href=javascrīpt:dopage(\'result\',\'$url?page=$prepg\');>前页</a> \"; else $pagenav.=\" 前页 \";
if($nextpg) $pagenav.=\" <a href=javascrīpt:dopage(\'result\',\'$url?page=$nextpg\');>后页</a> \"; else $pagenav.=\" 后页 \";
$pagenav.=\" <a href=javascrīpt:dopage(\'result\',\'$url?page=$pagenum\');>尾页</a> \";
$pagenav.=\"</select> 页,共 $pagenum 页\";
//假如传入的页数参数大于总页数,则显示错误信息
If($page>$pagenum){
 Echo \"Error : Can Not Found The page \".$page;
 Exit;
}
$info=mysql_query(\"select * from cr_userinfo limit $offset,$num\"); //获取相应页数所需要显示的数据
While($it=mysql_fetch_array($info)){
 Echo $it[\'username\'];
 echo \"<br>\";
}       //显示数据
 echo\"<br>\";
 echo $pagenav;//输出分页导航
 ?>

以上为大家详细解释了PHP+AJAX无刷新分页实现方法,希望对大家学习php程序设计有所帮助。

本文地址:https://www.stayed.cn/item/9989

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。