jQuery+PHP+ajax实现微博加载更多内容列表功能


Posted in PHP onJune 27, 2014

在一些微博网站上我们经常可以看到这样的应用,微博内容列表上并没有使用分页条,而是一次加载一定数量的记录显示在列表页,当用户浏览到列表页底部时,可以通过单击“查看更多”来加载更多记录。本文将结合jQuery和PHP给大家讲述如何实现这种功能。

Ajax加载的基本原理:当页面载入时,jQuery向后台请求数据,PHP通过查询数据库将最新的几条记录显示在列表页,在列表页的底部有个“查看更多”的链接,通过触发该链接,向服务端发送Ajax请求,后台PHP程序得到请求参数,并作出响应,获取数据库相应的记录并以JSON的形式返回给前台页面,前台页面jQuery解析JSON数据,并将数据追加到列表页。其实就是Ajax分页效果。

首先要引入jquery库和jquery.more.js插件,jquery.more.js已经将许多功能都封装好了,并提供了参数配置的功能。

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript" src="jquery.more.js"></script>

xhtml结构如下:

<div id="more"> 
  <div class="single_item"> 
   <div class="element_head"> 
    <div class="date"></div> 
    <div class="author"></div> 
   </div> 
   <div class="content"></div> 
  </div> 
  <a href="javascript:;" class="get_more">::点击加载更多内容::</a> 
</div>

需要指出的是,样式single_item,get_more是和jquery.more.js插件关联的,你也可以取另外的class名字,但是在配置的时候一定要将对应的class写上。

CSS样式如下:

#more{margin:10px auto;width: 560px; border: 1px solid #999;}    
.single_item{padding: 20px; border-bottom: 1px dotted #d3d3d3;} 
.author{position: absolute; left: 0px; font-weight:bold; color:#39f} 
.date{position: absolute; right: 0px; color:#999} 
.content{line-height:20px; word-break: break-all;} 
.element_head{width: 100%; position: relative; height: 20px;} 
.get_more{margin:10px; text-align:center} 
.more_loader_spinner{width:20px; height:20px; margin:10px auto; background: url(loader.gif) 
 no-repeat;}

以上CSS是本例中定制的,当然,大家可以在实际项目中定制不同的样式。注意,more_loader_spinner是定义加载动画图片的。

jQuery部分如下:

$(function(){ 
 $('#more').more({'address': 'data.php'}) 
});

使用很简单,配置了后台地址:data.php,来看data.php是怎么处理数据的。

PHP部分

data.php文件:

链接数据库:

require_once('connect.php'); 
$last = $_POST['last']; 
$amount = $_POST['amount']; 
$user = array('demo1','demo2','demo3','demo3','demo4'); 
$query=mysql_query("select * from say order by id desc limit $last,$amount"); 
while ($row=mysql_fetch_array($query)) { 
 $sayList[] = array( 
  'content'=>$row['content'], 
  'author'=>$user[$row['userid']], 
  'date'=>date('m-d H:i',$row['addtime']) 
  ); 
} 
echo json_encode($sayList);

data.php接收前台页面提交过来的两个参数,$_POST['last']即开始记录数,$_POST['amount']即单次显示记录数,看SQL语句就明白,其实就是分页中用到的语句。
然后将查询的结果以JSON格式输出,PHP的任务就完成了。

最后来看下jquery.more.js的参数配置

'amount'  : '10',   //每次显示记录数 
'address'  : 'comments.php', //请求后台的地址 
'format'  : 'json',   //数据传输格式 
'template' : '.single_item', //html记录DIV的class属性 
'trigger'  : '.get_more', //触发加载更多记录的class属性 
'scroll'  : 'false',  //是否支持滚动触发加载 
'offset'  : '100',   //滚动触发加载时的偏移量
PHP 相关文章推荐
PHP insert语法详解
Jun 07 PHP
php 三维饼图的实现代码
Sep 28 PHP
php trim 去除空字符的定义与语法介绍
May 31 PHP
PHP处理JSON字符串key缺少双引号的解决方法
Sep 16 PHP
Laravel 5框架学习之数据库迁移(Migrations)
Apr 08 PHP
PHP限制HTML内容中图片必须是本站的方法
Jun 16 PHP
php实现简单的上传进度条
Nov 17 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
laravel获取不到session的三种解决办法【推荐】
Sep 16 PHP
PHP addslashes()函数讲解
Feb 03 PHP
Laravel 创建指定表 migrate的例子
Oct 09 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 PHP
支持生僻字且自动识别utf-8编码的php汉字转拼音类
Jun 27 #PHP
php使用GeoIP库实例
Jun 27 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
Jun 26 #PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
Jun 26 #PHP
ThinkPHP模板自定义标签使用方法
Jun 26 #PHP
ThinkPHP调用百度翻译类实现在线翻译
Jun 26 #PHP
使用ThinkPHP+Uploadify实现图片上传功能
Jun 26 #PHP
You might like
德生9700DX电路分析
2021/03/02 无线电
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
2020/03/26 PHP
jQuery的链式调用浅析
2010/12/03 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
JS刷新当前页面的几种方法总结
2013/12/24 Javascript
jQuery实现连续动画效果实例分析
2015/10/09 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
Nuxt pages下不同的页面对应layout下的页面布局操作
2020/11/05 Javascript
从零学Python之入门(五)缩进和选择
2014/05/27 Python
Python中的列表知识点汇总
2015/04/14 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
python画折线图的程序
2018/07/26 Python
Python 加密与解密小结
2018/12/06 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
垃圾回收的优点和原理
2014/05/16 面试题
初中生自我鉴定
2014/02/04 职场文书
食品安全承诺书
2014/05/22 职场文书
校外活动方案
2014/08/28 职场文书
学生违反校规检讨书
2014/10/28 职场文书
优秀教师推荐材料
2014/12/16 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
金砖之国观后感
2015/06/11 职场文书
三八节活动主持词
2015/07/04 职场文书
初中英语教学随笔
2015/08/15 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis