我只需要一个timeajax请求

时间:2020-10-20 01:38:37

标签: jquery

它总是在页面滚动时请求,但是我只希望每页一个请求。

这是我的代码:

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();
                }
            });
            }
        });
        
    }

1 个答案:

答案 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。