首页 > 解决方案 > 我只想要一个 timeajax 请求

问题描述

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

这是我的代码:

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

标签: jquery

解决方案


在 中设置 a variableglobal 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。


推荐阅读