php原生上拉加载以及点击加载更多的实现方法(代码示例)

本篇文章给大家带来的内容是关于php原生上拉加载以及点击加载更多的实现方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

设计目的:

一个网站的数据非常多的时候,需要分页,方便浏览,为了方便翻页,那么我们摒弃传统的点击翻页,直接往下拉,不停地自动加载数据,这样就可以方便阅读。

设计原理:

通过ajax向后端接口发起翻页请求,发送页码,后端接收页码,返回json数据,前端jquery解析json并且拼接在原有的数据基础上!

代码:index.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0,viewport-fit=cover">
  7. <meta name="apple-mobile-web-app-capable" content="yes">
  8. <meta name="apple-mobile-web-app-status-bar-style" content="black">
  9. <meta name="format-detection" content="telephone=no">
  10. <title>jquery+ajax上拉加载更多</title>
  11. <style>
  12. *{margin:0;padding: 0;}
  13. #text p{
  14. width: 80%;
  15. padding: 5px 5px;
  16. background: #eee;
  17. margin:5px auto;
  18. }
  19. #loadmore{
  20. width: 120px;
  21. background: #eee;
  22. height: 45px;
  23. border-radius: 100px;
  24. margin:20px auto;
  25. line-height: 45px;
  26. text-align: center;
  27. cursor: pointer;
  28. }
  29. #loading{
  30. text-align: center;
  31. }
  32. </style>
  33. </head>
  34. <body>
  35. <h3 ></h3>
  36. <div ></div>
  37. <div >点击加载更多</div>
  38. </body>
  39. </html>
  40. <!--引入jquery库-->
  41. <script type="text/javascript" src="http://www.yilingsj.com/skin/yilingsj/js/jquery-1.8.3.min.js"></script>
  42. <script>
  43. // 定义一个变量,等会用来控制多次触发
  44. var i=0;
  45. $(window).scroll(function(){
  46. //获取滚动时距离浏览器顶部的值
  47.  var t=$(this).scrollTop();
  48. //获取当前窗口的高度
  49.  var h=$(this).height();
  50. //获取按钮距离浏览器顶部的值
  51.  var h1=$('#loadmore').offset().top;
  52. //用按钮的值-滚动条的值与窗口高度进行比较,如果小时,则表示按钮进入可视区,同时也表示滚动条即将到达底部
  53.  if(h1-t<h){
  54. //防止快速下拉时多次触发
  55.   if(i==0){
  56. //改变i的值
  57.    i=1;
  58.    //触发点击事件
  59.    $('#loadmore').click();
  60.   }
  61.  }
  62. });
  63. // 加载初始数据
  64. var p = 1;
  65. $.ajax({
  66.   type:"get",
  67.   url:'server.php?page=' + p,
  68.   data:{},
  69.   dataType:"json",
  70.   success:function(data){
  71. for (var a in data){
  72. $('#text').append("<p>"+data[a].resname+"</p>");
  73. $("#loading").remove();
  74. }
  75.    i=0;
  76.   },
  77. error:function(data){
  78.   },
  79. beforeSend:function(data){
  80. $('#loading').append("加载中");
  81. }
  82.  });
  83. // 加载更多
  84. $('#loadmore').click(function(){
  85. p++;
  86.  $.ajax({
  87.   type:"get",
  88.   url:'server.php?page=' + p,
  89.   data:{},
  90.   dataType:"json",
  91.   success:function(data){
  92. for (var a in data){
  93. $('#text').append("<p>"+data[a].resname+"</p>");
  94. $("#loading").remove();
  95. }
  96.    i=0;
  97.   },
  98. error:function(data){
  99.    $('#text').append("<p>"+服务器错误+"</p>");
  100.   },
  101. beforeSend:function(data){
  102. $('#loading').append("加载中");
  103. }
  104.  });
  105. });
  106. </script>

server.php

  1. <?php
  2. header("Content-type:application/json");
  3. header('Access-Control-Allow-Origin:*');
  4. // 连接数据库
  5. $con = mysql_connect("数据库地址","数据库账号","数据库密码");
  6. if (!$con){die('Could not connect: ' . mysql_error());}
  7. mysql_select_db("数据库名", $con);
  8. mysql_query("SET NAMES UTF8");
  9. // 每页显示条数
  10. $pageLine = 5;
  11. // 计算总记录数
  12. $ZongPage = mysql_query("select count(*) from 表名");
  13. // 计算总页数
  14. $sum = mysql_fetch_row($ZongPage);
  15. $pageCount = ceil($sum[0]/$pageLine);
  16. // 定义页码变量
  17. @$tmp = $_GET['page'];
  18. // 计算分页起始值
  19. $num = ($tmp - 1) * $pageLine;
  20. // 查询语句
  21. $result = mysql_query("SELECT 字段 FROM 表名 ORDER BY id DESC LIMIT " . $num . ",$pageLine");
  22. //遍历输出
  23. $results = array();
  24. while ($row = mysql_fetch_assoc($result)) {
  25. $results[] = $row;
  26. }
  27. echo json_encode($results);
  28. //分页按钮
  29. //上一页
  30. $lastpage = $tmp-1;
  31. //下一页
  32. $nextpage = $tmp+1;
  33. //防止翻过界
  34. if (@$tmp > $pageCount) {
  35. echo "[{\"result\":\"没有了\"}]";
  36. }
  37. // 关闭数据库连接
  38. mysql_close($con);
  39. ?>

以上就是php原生上拉加载以及点击加载更多的实现方法(代码示例)的详细内容。