php+ajax+jquery实现点击加载更多内容


Posted in Javascript onMay 03, 2015

我们在一些微博网站上可以碰到这样的应用,微博内容列表没有使用分页条,而是一次加载一定数量的记录显示在列表页,当用户浏览到列表页底部时,可以通过单击“查看更多”来加载更多记录。本文我将结合jQuery和PHP给大家讲述如何实现这种应用。

基本原理:页面载入时,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',          //滚动触发加载时的偏移量

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
JQuery浮动DIV提示信息并自动隐藏的代码
Aug 29 Javascript
ASP.NET中AJAX 调用实例代码
May 03 Javascript
js动态修改整个页面样式达到换肤效果
May 23 Javascript
js实现遮罩层弹出框的方法
Jan 15 Javascript
JQuery选择器、过滤器大整理
May 26 Javascript
微信小程序 UI布局常用技巧整理总结
Dec 05 Javascript
JS产生随机数的用法小结
Dec 10 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
Jun 15 Javascript
Vue组件之Tooltip的示例代码
Oct 18 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
Aug 31 Javascript
深入分析element ScrollBar滚动组件源码
Jan 22 Javascript
详解javascript函数写法大全
Mar 25 Javascript
jquery插件hiAlert实现网页对话框美化
May 03 #Javascript
javascript结合canvas实现图片旋转效果
May 03 #Javascript
浅谈javascript语法和定时函数
May 03 #Javascript
Jquery中的$.each获取各种返回类型数据的使用方法
May 03 #Javascript
JQuery简单实现锚点链接的平滑滚动
May 03 #Javascript
jQuery中 attr() 方法使用小结
May 03 #Javascript
浅谈被jQuery抛弃的函数及替代函数
May 03 #Javascript
You might like
谈谈新手如何学习PHP
2006/12/14 PHP
分享PHP header函数使用教程
2013/09/05 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
js读取配置文件自写
2014/02/11 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
2014/08/04 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
JavaScript代码生成PDF文件的方法
2016/02/26 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
vue2.0父子组件间通信的实现方法
2017/04/19 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
vue项目开启Gzip压缩和性能优化操作
2020/10/26 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
Django模板Templates使用方法详解
2019/07/19 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
python烟花效果的代码实例
2020/02/25 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
2020/03/02 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
Python 如何在字符串中插入变量
2020/08/01 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
关于css中margin的值和垂直外边距重叠问题
2020/10/27 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
斯德哥尔摩通票:Stockholm Pass
2018/01/09 全球购物
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
2012/09/06 面试题
夫妻分居协议书范本
2014/11/28 职场文书
看上去很美观后感
2015/06/10 职场文书
导游词之山海关
2019/12/10 职场文书