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中如何调用用户自定义函数
Aug 06 PHP
php+ajax实时刷新简单实例
Feb 25 PHP
CentOS安装php v8js教程
Feb 26 PHP
php 在线导入mysql大数据程序
Jun 11 PHP
详解PHP序列化反序列化的方法
Oct 27 PHP
深入理解PHP内核(二)之SAPI探究
Nov 10 PHP
php版交通银行网银支付接口开发入门教程
Sep 26 PHP
微信公众号开发之通过接口删除菜单
Feb 20 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
laravel使用数据库测试注意事项
Apr 10 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 strcmp使用说明
2010/04/22 PHP
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
javascript编程起步(第七课)
2007/02/27 Javascript
Javascript 错误处理的几种方法
2009/06/13 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
jQuery控制输入框只能输入数值的小例子
2013/03/20 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
谷歌Chrome浏览器扩展程序开发小记
2016/01/06 Javascript
ES6的新特性概览
2016/03/10 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
Bootstrap 模态框实例插件案例分析
2016/12/28 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
Vue动态获取width的方法
2018/08/22 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
解决python2.7用pip安装包时出现错误的问题
2017/01/23 Python
Django发送邮件和itsdangerous模块的配合使用解析
2019/08/10 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
opencv3/C++图像像素操作详解
2019/12/10 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
PyQt5+Pycharm安装和配置图文教程详解
2020/03/24 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
HTML5图片预览实例分享
2014/06/04 HTML / CSS
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
婚内分居协议书范文
2014/11/26 职场文书
教师工作表现自我评价
2015/03/05 职场文书
《童年》读后感(三篇)
2019/08/27 职场文书
Python绘画好看的星空图
2022/03/17 Python