php+ajax实现无刷新动态加载数据技术_php实例

我们浏览有些网页的时候,当拉动浏览器的滚动条时到页底时,页面会继续自动加载更多内容供用户浏览。这种技术我暂且称它为滚屏加载技术。我们发现很多网站用到这种技术,必应图片搜索、新浪微博、QQ空间等将该技术应用得淋漓尽致。

滚屏加载技术,就是使用Javascript监视滚动条的位置,每次当滚动条到达浏览器窗口底部时,触发一个Ajax请求后台PHP程序,返回相应的数据,并将返回的数据追加到页面底部,从而实现了动态加载,其实就是一个典型的Ajax应用。本文将使用jQuery,结合PHP,mysql以及JSON,为您讲解如何应用滚屏加载技术到您的项目中去。当然,阅读本文的前提是您需要有jQuery和PHP相关基础。

index.php

我们默认要显示15条数据,因此,我们先从数据库取开始的15条数据显示在页面。后面新加载的数据,我们也按每次15条的方式展示。

为了讲解尽量简单,我使用原生的PHP和mysql查询语句。首先,需要连接数据库,包含连接信息的connnect.php。这里我定义了几个用户id。

然后查询数据表,获得结果集,并循环输出,代码如下:

<?php
require_once('connect.php');
$user = array('demo1','demo2','demo3','demo3','demo4');
?>
<div id="container">
  <?php
  $query=mysql_query("select * from say order by id desc limit 0,15");
  while ($row=mysql_fetch_array($query)) {
  ?>
  <div class="single_item">
    <div class="element_head">
       <div class="date"><?php echo date('m-d H:i',$row['addtime']);?></div>
       <div class="author"><?php echo $user[$row['userid']];?></div>
     </div>
     <div class="content"><?php echo $row['content'];?></div>
  </div>
  <?php } ?>
 </div>
<div class="nodata"></div>

注:本例使用的数据来源于本站文章:,文中有创建数据表的介绍。

jQuery

1、首先,我们要获取浏览器可视区域页面的高度:

复制代码 代码如下:

var winH = $(window).height();

2、然后,当滚动页面的时候需要做的事情是:计算页面总高度(当滚动底部时,页面新加载数据,所以页面总高度是动态变化的),计算滚动条位置(滚动条位置也是随着加载页面的高度动态变化的),然后构造一个公式,计算相对比例。

$(window).scroll(function () {
  var pageH = $(document.body).height(); //页面总高度
  var scrollT = $(window).scrollTop(); //滚动条top
  var aa = (pageH-winH-scrollT)/winH;
});

3、当滚动条接近页底时,触发ajax加载,在本例中我们使用jQuery的getJSON方法,向服务端result.php发送请求,请求的参数为page,即页数。

if(aa<0.02){
  $.getJSON("result.php",{page:i},function(json){
    .....
  });
 }

4、如果请求响应成功返回JSON数据,则解析JSON数据,并将数据追加到页面DIV#container后,如果没有JSON数据返回,则说明数据全部显示完毕

if(json){
  var str = "";
  $.each(json,function(index,array){ //遍历
    var str = "..."; //获取的JSON数据
    $("#container").append(str); //追加
  });
  i++; //页数+1
}else{
  $(".nodata").show().html("别滚动了,已经到底了。。。");
  return false;
}

完整的jQuery代码如下:

$(function(){
  var winH = $(window).height(); //页面可视区域高度
  var i = 1; //设置当前页数
  $(window).scroll(function () {
    var pageH = $(document.body).height();
    var scrollT = $(window).scrollTop(); //滚动条top
    var aa = (pageH-winH-scrollT)/winH;
    if(aa<0.02){
      $.getJSON("result.php",{page:i},function(json){
        if(json){
          var str = "";
          $.each(json,function(index,array){
            var str = "<div class=\"single_item\"><div class=\"element_head\">";
            var str += "<div class=\"date\">"+array['date']+"</div>";
            var str += "<div class=\"author\">"+array['author']+"</div>";
            var str += "</div><div class=\"content\">"+array['content']+"</div></div>";
            $("#container").append(str);
          });
          i++;
        }else{
          $(".nodata").show().html("别滚动了,已经到底了。。。");
          return false;
        }
      });
    }
  });
});

result.php

当滚动到页面底部时,前端Ajax请求到result.php,该后台程序将根据请求的数据页数:page,查询数据表中对应的记录,并将记录集以json的格式输出返回给前端处理。

require_once('connect.php'); //连接数据库 

$user = array('demo1','demo2','demo3','demo3','demo4');
$page = intval($_GET['page']); //获取请求的页数
$start = $page*15;
$query=mysql_query("select * from say order by id desc limit $start,15");
while ($row=mysql_fetch_array($query)) {
  $arr[] = array(
    'content'=>$row['content'],
    'author'=>$user[$row['userid']],
    'date'=>date('m-d H:i',$row['addtime'])
  );
}
echo json_encode($arr); //转换为json数据输出

好了,本文的介绍到此结束,快去看看效果吧。

以上所述就是本文的全部内容了,希望大家能够喜欢。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ajax
, php
无刷新
ajax动态刷新数据实例、ajax局部刷新div实例、ajax局部刷新实例、ajax异步刷新实例、ajax实现局部刷新实例,以便于您获取更多的相关知识。

时间: 2024-10-02 10:50:34

php+ajax实现无刷新动态加载数据技术_php实例的相关文章

php+ajax实现无刷新动态加载数据技术

  无刷新功能我们用到很多很多的,下面我就来给各位介绍一个实例,就是实现php+ajax实现无刷新滚屏加载数据,例子非常的简单大家只要按流程来操作就可以了哦. 我们浏览有些网页的时候,当拉动浏览器的滚动条时到页底时,页面会继续自动加载更多内容供用户浏览.这种技术我暂且称它为滚屏加载技术.我们发现很多网站用到这种技术,必应图片搜索.新浪微博.QQ空间等将该技术应用得淋漓尽致. 滚屏加载技术,就是使用Javascript监视滚动条的位置,每次当滚动条到达浏览器窗口底部时,触发一个Ajax请求后台PH

无刷新动态加载数据 滚动条加载适合评论等页面_php技巧

滚屏加载更多数据,适合评论等页面 本例的数据库很简单,一看就明了   复制代码 代码如下: <div id="container"> <?php $query=mysql_query("select * from content order by id desc limit 0,10"); while ($row=mysql_fetch_array($query)) { ?> <div class="single_item&q

PHP + JavaScript + Ajax 实现无刷新页面加载效果

数据源工厂 Json生成方式1 Json生成方式2 数据搬运工 数据加工师 转换类型 加工展示 结果展示 初始页面 点击按钮之后 总结 今天这个实验的思路就是实现一个无刷新的页面加载效果.具体的思路是使用PHP开发后台,为前台准备数据,然后使用Ajax技术作为数据的搬运工,将数据从服务器端拉取到前端,最后使用JavaScript技术将获取到的数据加工,并显示在页面上. 数据源工厂 本次实验数据以Json的格式传输和处理.下面有两种生成json字符串的方式. Json生成方式1 PHP自带json

无刷新动态加载评论

<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    <title></title>    <script src="JS/jquery-1.7

Ajax实现动态加载组合框的实例代码

一  province.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <script type="text/javascript" language="javaScript"> var xmlHttp = false; //全局变量,

ajax 动态加载数据提示没有更多内容加载了

问题描述 ajax 动态加载数据提示没有更多内容加载了 怎么判断所有的数据已经加载完毕,提示没有更多内容加载了? if(data=='') 这个判断有误,求高人指点 解决方案 如果是分页你自己服务器端计算好总页数赋值给js变量,然后js设置一个当前页变量,每次加载后和总量对比就好了,干么多请求一次服务器由服务器返回空内容来控制是否加载完呢.. 解决方案二: 不知道你想问什么,data是什么?你的返回值怎么判断没有内容了.你的判断有误怎么得出的结论?有误的时候data什么值 解决方案三: data

AJAX和jQuery动态加载数据的实现方法_jquery

什么是AJAX? 这里的AJAX不是希腊神话里的英雄,也不是清洁剂品牌,更不是一门语言,而是指异步Javascript和XML(Asynchronous JavaScript And XML),这里的XML(数据格式)也可以是纯文本(Plain Text)或是JSON.简单的说,就是使用XMLHttpRequest对象和服务器端交换数据(以XML或是JSON等格式),使用JavaScript处理数据并更新页面内容. 为什么要使用AJAX? 借助AJAX,我们可以实现: 在不重载页面的情况下,向服

Ajax与DOM实现动态加载

首先说下问题背景:想要通过异步请求一个文本文件,然后通过该文件的内容动态创建一个DOM节点添加到网页中. 基于这个需要了解: 1 DOM如何动态添加节点 2 Ajax异步请求 3 Chrome浏览器如何处理本地请求 DOM如何动态添加节点 想要动态的添加节点,就需要良好的理解DOM文档. 常用的几个方法: getElementById()  getElementsByTagName() getAttribute() setAttribute() 以及 createElement() create

gridpanel动态加载数据的实例代码

这篇文章介绍了gridpanel动态加载数据的实例代码,有需要的朋友可以参考一下   复制代码 代码如下: <script type='text/javascript'> function editEsOrder(options,success,response){ if (success){ var tagModelManager_maxOrderIdJson=Ext.util.JSON.decode(response.responseText); var orderValue = tagM