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 相关文章推荐
Javascript里使用Dom操作Xml
Jan 22 Javascript
学习ExtJS accordion布局
Oct 08 Javascript
jQuery封装的tab选项卡插件分享
Jun 16 Javascript
js实现仿京东2级菜单效果(带延时功能)
Aug 27 Javascript
原生JS实现图片轮播与淡入效果的简单实例
Aug 21 Javascript
jquery uploadify隐藏上传进度的实现方法
Feb 06 Javascript
深入理解AngularJS中的ng-bind-html指令
Mar 27 Javascript
微信小程序 动态绑定事件并实现事件修改样式
Apr 13 Javascript
Vue框架里使用Swiper的方法示例
Sep 20 Javascript
解决微信小程序调用moveToLocation失效问题【超简单】
Apr 12 Javascript
vue动态禁用控件绑定disable的例子
Oct 28 Javascript
Vue.js中v-for指令的用法介绍
Mar 13 Vue.js
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实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
php+jQuery+Ajax简单实现页面异步刷新
2016/08/08 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
JavaScript 放大镜 放大倍率和视窗尺寸
2011/05/09 Javascript
jquery查找父元素、子元素(个人经验总结)
2014/04/09 Javascript
Javascript解析URL方法详解
2014/12/05 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
JS实现的表格操作类详解(添加,删除,排序,上移,下移)
2015/12/22 Javascript
NodeJS实现阿里大鱼短信通知发送
2016/01/17 NodeJs
简单模拟node.js中require的加载机制
2016/10/27 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
详解Nuxt.js Vue服务端渲染摸索
2018/02/08 Javascript
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
玩转python爬虫之URLError异常处理
2016/02/17 Python
Django框架教程之正则表达式URL误区详解
2018/01/28 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
python中csv文件的若干读写方法小结
2018/07/04 Python
对python中if语句的真假判断实例详解
2019/02/18 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
wxPython多个窗口的基本结构
2019/11/19 Python
Python第三方包PrettyTable安装及用法解析
2020/07/08 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
Python页面加载的等待方式总结
2021/02/28 Python
火锅店营销方案
2014/02/26 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
中秋晚会活动方案
2014/08/31 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
2021/05/25 Vue.js
Python 中 Shutil 模块详情
2021/11/11 Python
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技