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 相关文章推荐
JS 自动完成 AutoComplete(Ajax 查询)
Jul 07 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
Jun 08 Javascript
JavaScript实现按Ctrl键打开新页面
Sep 04 Javascript
jquery选择器需要注意的问题
Nov 26 Javascript
jQuery链式操作实例分析
Nov 16 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
Aug 05 Javascript
jQuery实现贪吃蛇小游戏(附源码下载)
Mar 04 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
Mar 15 Javascript
vue2.0移除或更改的一些东西(移除index key)
Aug 28 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
Sep 02 Javascript
Vue-cli项目部署到Nginx服务器的方法
Nov 01 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
Jun 04 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+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
php mssql 时间格式问题
2009/01/13 PHP
php 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
php的memcached客户端memcached
2011/06/14 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
2014/10/30 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
PHP 实现 JSON 数据的编码和解码操作详解
2020/04/22 PHP
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
js DOM模型操作
2009/12/28 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
详解vue.js移动端导航navigationbar的封装
2017/07/05 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
Node.JS如何实现JWT原理
2020/09/18 Javascript
[01:00:59]VP VS VG Supermajor小组赛胜者组第二轮 BO3第二场 6.2
2018/06/03 DOTA
python实现二维数组的对角线遍历
2019/03/02 Python
安装Pycharm2019以及配置anconda教程的方法步骤
2019/11/11 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
如何利用python web框架做文件流下载的实现示例
2020/06/02 Python
python包的导入方式总结
2021/03/02 Python
新加坡交友网站:be2新加坡
2019/04/10 全球购物
世界经理人咨询有限公司面试
2014/09/23 面试题
一套软件开发工程师笔试题
2015/05/18 面试题
办公文员的工作岗位职责
2013/11/12 职场文书
社区交通安全实施方案
2014/03/22 职场文书
大学理论知识学习自我鉴定
2014/04/28 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
珍爱生命主题班会
2015/08/13 职场文书
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android