当用户滚动到底部时,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;
}
})
相关文章:
- 通过Ajax将JavaScript函数传递给PHP文件
- jQuery成功函数中的ajax成功函数
- 访问$.ajax()函数中的两个不同数组
- 使用ajax用jquery调用php函数
- 执行ajax成功函数-jQUERY
- javascript未捕获类型错误函数ajax
- 无法调用函数 /AJAX 相关
- Javascript 回调函数 + AJAX.done.
- jQuery在函数AJAX函数内部的全局变量有问题
- Getting TypeError:$.ajax(..).done不是函数[ajax,Jquery]
- jQuery中的调用函数ajax成功响应工作一次,而不是两次
- 传递参数给函数(ajax, javascript, jquery)
- 在每个循环中运行一个函数(ajax.response)
- 运行jQuery函数.Ajax等待响应的时间足够长
- 从表单调用同一页面内的JS函数(AJAX)
- Javascript函数AJAX调用返回未定义
- 如何使javascript变量全局,并将其传递到函数ajax
- 喜欢不喜欢函数AJAX
- 从函数 Ajax 返回
- JQuery等待任何函数完成后再启动另一个函数——ajax、动画和音频