A-A+

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

2020年01月02日 我爱编程 暂无评论

本篇文章给大家带来的内容是关于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 id="loading"></h3>
  36.     <div id="text"></div>
  37.     <div id="loadmore">点击加载更多</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原生上拉加载以及点击加载更多的实现方法(代码示例)的详细内容。

给我留言

Copyright © 四季博客 保留所有权利.   Theme  Ality

用户登录