通过JQuery和AJAX实现页面数据的动态加载

对JQuery不咋了解,想实现一个像google图片里的下翻页的效果,闭门造车一番,终于搞定了。
[color=red]
不咋了解其他实现方式,有好的实现方式探讨下。[/color]

我的实现方式没啥难的,有一个需要注意的地方就是设置一个锁,避免onscroll事件触发后多次调用ajax。

另外如果是静态数据内容,比如团购网站的每天团购内容不变化,可以记录刷新到数据的总数量。因为每次数量都是增加的,如果数量没有增加,则说明没有数据了,就不再进行ajax请求,减少后台压力。如果数据是动态刷新的,比如google图片之类的,就不能用这个了。

在本例中,是唱片超市中的唱片,每个唱片框的高度是固定的。唱片超市里的数据基本也是静态的。

大概流程为:
onscroll达到刷新数据的条件->进行ajax获取数据->在数据列表div下通过appendTo增加数据

具体代码如下:

var lastSize = 0;//最后一次刷新,列表中元素总数量(这种机制不适合动态数据)
var doing = false;//锁,表示是否有onscroll事件在执行刷新操作,这个比较关键
window.onscroll = function() {
if(doing ==true)
return;
var scrollHeight = $(document).scrollTop();//滚动过的高度
var listBoxHeight = $('.list_box').height(); //每个刷新出图片框的高度
if(scrollHeight > listBoxHeight){
var discSize = $("#discSize").val(); //已刷新列表的数量
var allHeight = $(document).height();

if(allHeight - scrollHeight -listBoxHeight*3 < 0 && discSize!=lastSize){//达到刷新条件(页面高度判断),并且最后一页没有刷新过
doing = true;//锁
lastSize = discSize;//保存最后一页刷新过的size,避免重复刷新最后一页
ajaxGetDiscList(false);
doing =false;//释放锁
}
}
}
function ajaxGetDiscList(refresh){
$.get("..查询url",
{ ..查询条件}
,function(result){
if(refresh==true)//如果是更改了查询条件,则替换原DIV中内容
$('#shop_con').html(result);
else{ //在当前查询条件下增加内容
$(result).appendTo($('#shop_con'));
}
}
);
}


[color=red]踩的哥们要留下意见再走啊[/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值