它总是在页面滚动时请求,但是我只希望每页一个请求。
这是我的代码:
function loadLikeMoreVideos(category_id) {
$('.like-more-videos').html();
$(window).scroll(function() {
// if($(window).scrollTop() == $(document).height() - $(window).height()) {
if($(window).scrollTop()) {
$.post('<?php echo base_url('watch/ajax/get_more_videos'); ?>',{category_id: category_id},function(e){
if(e.status=='success'){
$('.like-more-videos').html(e.html);
}
if(typeof callback === 'function'){
callback();
}
});
}
});
}
答案 0 :(得分:2)
在variable
中设置global scope
,然后在发送false
后将其设置为first ajax
。
如下所示
var canAjax = true;
function loadLikeMoreVideos(category_id) {
$('.like-more-videos').html();
$(window).scroll(function() {
// if($(window).scrollTop() == $(document).height() - $(window).height()) {
if($(window).scrollTop()) {
if(canAjax){ // Check if we can send ajax
canAjax = false; // We're sending ajax, so the if statement above will fail if we try again
$.post('<?php echo base_url('watch/ajax/get_more_videos'); ?>',
{category_id: category_id},function(e){
if(e.status=='success'){
$('.like-more-videos').html(e.html);
}
if(typeof callback === 'function'){
callback();
}
});
}
}
});
}
如果您需要在设定的滚动距离后发送another
ajax请求,只需将window.scrollY
保存到变量中,然后在用户再次滚动时将其与新的window.scrollY
进行比较,例如,查看新值-旧值> 600(因此已通过600px),我们可以再次进行ajax。