【发布时间】:2014-11-10 22:36:08
【问题描述】:
如果您到达页面底部,此 js 代码会从服务器加载更多内容:
if ($(window).scrollTop() + $(window).height() == getDocHeight()) {
var next_pagenumber = parseInt($('#next_pagenumber').val());
var num_pages = parseInt($('#num_pages').val());
if(next_pagenumber <= num_pages){
$.get("?page_number=" + (next_pagenumber).toString(), function(data) {
if(data != "nomore"){
setTimeout(
function(){
$('#next_pagenumber').val(next_pagenumber+1);
$('#morenews').append(data);
}, 500);
}else{
$('#loadmore').hide();
}
});
}else{
console.log('no more pages to load');
}
}
但是,如果您快速向下滚动两次,则会发送 2 个具有相同 GET 的请求。
我怎样才能让代码等到前一个请求的响应在这里?
【问题讨论】:
-
您可能需要查看
debounce函数。 -
有一个布尔值 - 在 ajax 启动时将其设置为 true,并且在成功时将其设置为 false。这会奏效。
-
@JamieDixon 听起来不错,但找不到适合我的例子:(
-
你为什么在
$.get()成功回调中使用超时?关于去抖动事件,请参见例如:davidwalsh.name/javascript-debounce-function
标签: javascript jquery ajax