为什么这个功能在向下滚动到底页时会重复数据?
滚动到底页有时重复数据。
<script type="text/javascript">
$(document).ready(function(){
$(window).scroll(function(){
var height = $('#demoajax').height();
var scroll_top = $(this).scrollTop();
var isload = $('#demoajax').find('.isload').val();
var page = $('#demoajax').find('.nextpage').val();
document.getElementById('check').value = page++;
if(($(window).scrollTop() + $(window).height() == $(document).height()) && (isload=='true')){
$('#loading').show();
$.ajax({
url: 'aaa.php',
type: 'POST',
data: $('#fid').serialize(),
cache: false,
success: function(response){
$('#demoajax').find('.nextpage').remove();
$('#demoajax').find('.isload').remove();
$("#loading").fadeOut("slow");
$('#demoajax').append(response);
}
});
}
return false;
});
});
</script>
答案 0 :(得分:1)
你的意思是有时Ajax会多次调用,在这种情况下你可以忙着标记。默认情况下,busy标志设置为false。这是执行该操作的代码
var busy = false;
if(($(window).scrollTop() + $(window).height() == $(document).height()) && (isload=='true'))
{
if(busy)
return;
busy = true;
$('#loading').show();
$.ajax({
url: 'aaa.php',
type: 'POST',
data: $('#fid').serialize(),
cache: false,
success: function(response)
{
$('#demoajax').find('.nextpage').remove();
$('#demoajax').find('.isload').remove();
$("#loading").fadeOut("slow");
$('#demoajax').append(response);
},
complete: function()
{
busy = false;
}
});
}
return false;
});
});
我认为这应该可以解决问题。 谢谢。