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 相关文章推荐
phpmyadmin的#1251问题
Nov 25 PHP
PHP读写文件的方法(生成HTML)
Nov 27 PHP
Phpbean路由转发的php代码
Jan 10 PHP
PHP速成大法
Jan 30 PHP
Yii学习总结之安装配置
Feb 22 PHP
你应该知道PHP浮点数知识
May 13 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
PHP清除缓存的几种方法总结
Sep 12 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
Oct 11 PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 PHP
php ZipArchive实现多文件打包下载实例
Oct 31 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 xfocus防注入资料
2008/04/27 PHP
PHP header()函数使用详细(301、404等错误设置)
2013/04/17 PHP
php笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
php实现分页工具类分享
2014/01/09 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
2015/05/08 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
jQuery 页面 Mask实现代码
2010/01/09 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
原始XMLHttpRequest方法详情回顾
2013/11/28 Javascript
使用RequireJS优化JavaScript引用代码的方法
2015/07/01 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
Highcharts入门之简介
2016/08/02 Javascript
原生js实现简单的焦点图效果实例
2017/12/14 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
JS获取动态添加元素的方法详解
2019/07/31 Javascript
原生JS实现相邻月份日历
2020/10/13 Javascript
vue实现简单的登录弹出框
2020/10/26 Javascript
[41:52]2018DOTA2亚洲邀请赛3月29日 小组赛A组 TNC VS OpTic
2018/03/30 DOTA
深入理解Python爬虫代理池服务
2018/02/28 Python
Python&amp;&amp;GDAL实现NDVI的计算方式
2020/01/09 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
香港太阳眼镜网上商店:SmartBuyGlasses香港
2016/07/22 全球购物
计算机专业推荐信范文
2013/11/20 职场文书
服装设计行业个人的自我评价
2013/12/20 职场文书
优秀学生获奖感言
2014/02/15 职场文书
三分钟演讲稿范文
2014/04/24 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书