繁体   English   中英

用户滚动到底部时多次触发Ajax函数

[英]Ajax function firing multiple times when user scrolls to bottom

这很可能是重复的,是的,我在这里这里都看到过它们。 我的问题与第二个问题非常相似。

第二个链接建议要解决此问题,必须执行以下操作:

function loadMoreResults() {
  if (flag) return;
  flag = true;
[...]
  flag = false;
}

我已经尝试在我的实际代码中安装这样的逻辑,但是无论()和{}是否已正确打开和关闭,它都会给出语法错误。 也许我做错了。

$(document).ready(

    function loadAll (param) {
        if (param < 0) {
            return;
        } else if (isNaN(param)) {
            param = param.responseText;
        } else if (!isNaN(param)) {
        }

        $.ajax({
            url: '../login/functionLogin/functions.php',
            type: 'POST',
            dataType: 'JSON',
            data: {task: "load", next_id: param},
            success: function(data) {
                next_id = data.next_id;
                $.each(results, function(i, attr) {
                     //Do whatever and return next_id
                    }       
                })

            }
        });

        //Since the next_id is within the function, I do not have to make it global.

        $(window).scroll(function () { //If user scrolls to bottom, fire anything inside
                if ($(window).scrollTop() >= $(document).height() - $(window).height()) {

                    loadAll(next_id).die(); //Firing twice or even thrice

        }
    })

});

问题: 如何停止当前脚本两次触发? 这个脚本的结构好吗? [我强烈认为这是非常糟糕的设计,并且会导致此问题]

我可以详细说明。 我尽了最大的努力讲这个问题。

看来您回答了自己的问题! 添加变量并检查是否未定义,然后进行处理;如果已经设置,则不执行任何操作。

    $(window).scroll(function () { //If user scrolls to bottom, fire anything inside
            if ($(window).scrollTop() >= $(document).height() - $(window).height()) {
                if (typeof flag != 'undefined' && flag) return;
                loadAll(next_id); // .die(); // what is the die();  ??? //Firing twice or even thrice
                flag = true;

      }
    })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM