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 相关文章推荐
编译问题
Oct 09 PHP
php 防止单引号,双引号在接受页面转义
Jul 10 PHP
php flush类输出缓冲剖析
Oct 19 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
May 28 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
PHP判断远程图片或文件是否存在的实现代码
Feb 20 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
Jun 05 PHP
php分页函数完整实例代码
Sep 22 PHP
php制作文本式留言板
Mar 18 PHP
PHP连接access数据库
Mar 27 PHP
PHP、Java des加密解密实例
Apr 27 PHP
PHP xpath提取网页数据内容代码解析
Jul 16 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
PHP数据库开发知多少
2006/10/09 PHP
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
PHP删除HTMl标签的三种解决方法
2013/06/30 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
PHP错误Warning: Cannot modify header information - headers already sent by解决方法
2014/09/27 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
javascript时区函数介绍
2012/09/14 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
js函数模拟显示桌面.scf程序示例
2014/04/20 Javascript
一个Action如何调用两个不同的方法
2014/05/22 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
[01:15:18]2014 DOTA2国际邀请赛中国区预选赛 LGD VS Speed Gaming.cn
2014/05/22 DOTA
Python入门教程之运算符与控制流
2016/08/17 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
python os模块简单应用示例
2019/05/23 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
pandas.DataFrame.drop_duplicates 用法介绍
2020/07/06 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
高中生操行评语大全
2014/04/25 职场文书
责任心演讲稿
2014/05/14 职场文书
护士医德医风自我评价
2014/09/15 职场文书
2014年人事专员工作总结
2014/11/19 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
2015年社区反邪教工作总结
2015/10/14 职场文书
反邪教学习心得体会
2016/01/15 职场文书
Python pyecharts绘制条形图详解
2022/04/02 Python