您现在的位置是:网站首页> php专栏 扩展知识
php实现列表页新闻页ajax下拉加载更多数据
亦然2019-10-28 14:52:38【扩展知识】人已围观
简介为了方便用户阅览,一般传统的点击分页会改为下拉滑动分页。当滚动条到达页面底部,数据会自动加载。
一:原理
监听窗口滚动,判断滚动条是否到达了底部,这个公式是可视窗口高度+滚动条高度大于等于页面高度,这时就可以通过ajax累加新的数据。而后端通过ajax传的分页参数来返回对应的数据列表。效果参考本站首页:https://www.baikesec.com
二:实现代码
这里以thinkphp为基础为例,默认下发10条数据,当需要自动加载时,分页页码传的是2。
1>控制器代码:
public function getArticle(){
$page = input('page');
$limit = 10;
$res = Db::field('title,createtime,url,s_catename,s_pagename,description,pic,createby,head_image')
->table('hx_article')
->alias('a')
->join('hx_spage w', 'a.type_id = w.s_id')
->join('hx_admin d','a.createby = d.username')
->order('a.createtime desc')
->where('display',1)->page($page)->limit($limit)->select();
return $res;
}
2>页面数据渲染代码:
这里加入了一个加载特效图片,当自动加载下一页时,出来等待特效。
<div id="container">
{volist name="pnews" id="p"}
<li>
/*这里是列表数据*/
</li>
{/volist}
</div>
<div class="pagination-loading" style="text-align: center;">
<img src="images/loading.gif" />
</div>
3>ajax加载代码:
<script type="text/javascript">
$(function(){
//防止加载两次
var load=0;
var winH = $(window).height(); //页面可视区域高度
var i = 2;
$(window).scroll(function () {
if(load)return;
var pageH = $(document.body).height();
var scrollT = $(window).scrollTop(); //滚动条top
var aa = (pageH-winH-scrollT)/winH;
if(aa<0.02){
load=1;
$.getJSON("方法路径",{page:i},function(json){
load=0;
if(json != ''){
var str = "";
$.each(json,function(index,array){
var str = "数据列表";
$("#container").append(str);
});
i++;
}else{
$(".pagination-loading").show().html("已经拉动底了,啦啦啦");
return false;
}
});
}
});
});
</script>
很赞哦!()
上一篇:博客网页上添加live2D看板娘




