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脚本的10个技巧(3)
Oct 09 PHP
同时提取多条新闻中的文本一例
Oct 09 PHP
php基础知识:控制结构
Dec 13 PHP
php 读取shell管道传输过来的内容
Mar 01 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
PHP命令行脚本接收传入参数的三种方式
Aug 20 PHP
php跨站攻击实例分析
Oct 28 PHP
php实现TCP端口检测的方法
Apr 01 PHP
laravel如何开启跨域功能示例详解
Aug 31 PHP
php抽象类和接口知识点整理总结
Aug 02 PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 PHP
如何在Mac上通过docker配置PHP开发环境
May 29 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
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
PHP实现递归无限级分类
2015/10/22 PHP
Javascript 读书笔记索引贴
2010/01/11 Javascript
起点页面传值js,有空研究学习下
2010/01/25 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
javascript结合ajax读取txt文件内容
2014/12/05 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
Bootstrap CSS布局之表单
2016/12/17 Javascript
移动端web滚动分页的实现方法
2017/05/05 Javascript
javascript 玩转Date对象(实例讲解)
2017/07/11 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
javascript系统时间设置操作示例
2019/06/17 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
vue离开当前页面触发的函数代码
2020/09/01 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
Python中音频处理库pydub的使用教程
2017/06/07 Python
numpy中以文本的方式存储以及读取数据方法
2018/06/04 Python
python多线程http压力测试脚本
2019/06/25 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
python自动下载图片的方法示例
2020/03/25 Python
python3 正则表达式基础廖雪峰
2020/03/25 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
物流仓管员岗位职责
2013/12/04 职场文书
小学美术教学反思
2014/02/01 职场文书
反四风问题学习心得体会
2016/01/22 职场文书
2016年第104个国际护士节活动总结
2016/04/06 职场文书
python通配符之glob模块的使用详解
2021/04/24 Python