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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(2)
Oct 09 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
Sep 08 PHP
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
Sep 10 PHP
php小型企业库存管理系统的设计与实现代码
May 16 PHP
非常好用的两个PHP函数 serialize()和unserialize()
Feb 04 PHP
PHP去掉从word直接粘贴过来的没有用格式的函数
Oct 29 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
php常用字符串处理函数实例分析
Nov 22 PHP
Zend Framework教程之资源(Resources)用法实例详解
Mar 14 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
Aug 21 PHP
jQuery+php简单实现全选删除的方法
Nov 28 PHP
PHP获取当前日期及本周一是几月几号的方法
Mar 28 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插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
可以用来调试JavaScript错误的解决方案
2010/08/07 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
Bootstrap菜单按钮及导航实例解析
2016/09/09 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
2017/03/08 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
2019/03/11 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
[01:07:13]TNC vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python列表生成器的循环技巧分享
2015/03/06 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
Python 异常处理的实例详解
2017/09/11 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
django框架forms组件用法实例详解
2019/12/10 Python
深入浅析python的第三方库pandas
2020/02/13 Python
PyCharm 专业版安装图文教程
2020/02/20 Python
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
小学三年级数学教学反思
2014/01/31 职场文书
应聘医药销售自荐书范文
2014/02/08 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
Python利用folium实现地图可视化
2021/05/23 Python
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android