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 GeoIP的使用教程
Mar 09 PHP
Smarty的配置与高级缓存技术分享
Jun 05 PHP
使用PHP获取汉字的拼音(全部与首字母)
Jun 27 PHP
CI使用Tank Auth转移数据库导致密码用户错误的解决办法
Jun 12 PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 PHP
php页面函数设置超时限制的方法
Dec 01 PHP
php实现网站文件批量压缩下载功能
Oct 28 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
Mar 14 PHP
Smarty模板引擎缓存机制详解
May 23 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式一图文详解
Apr 09 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下实现伪 url 的超简单方法[转]
2007/09/24 PHP
php安全配置 如何配置使其更安全
2011/12/16 PHP
php实现微信公众号主动推送消息
2015/12/31 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
javascript编码的几个方法详细介绍
2013/01/06 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
jQuery实现炫酷的鼠标轨迹特效
2015/02/01 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
2015/03/13 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
Vue3 源码导读(推荐)
2019/10/14 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
基于python实现从尾到头打印链表
2019/11/02 Python
PyTorch 普通卷积和空洞卷积实例
2020/01/07 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
Keras-多输入多输出实例(多任务)
2020/06/22 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
Python 可视化神器Plotly详解
2020/12/26 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
日语专业毕业生求职信
2013/12/04 职场文书
六查六看剖析材料
2014/02/15 职场文书
手机被没收检讨书
2014/02/22 职场文书
心得体会的写法
2014/09/05 职场文书
十七岁的单车观后感
2015/06/12 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js