如果你到达页面的底部,这个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
的请求。
如何使代码等到前请求的响应在此处?
答案 0 :(得分:1)
以下是Bharath所说的测试案例。将布尔变量设置为true,并在成功后将其设置为false。
我在检查页码的IF语句中检查布尔值是否为true。
var ajaxTest = true;
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 && ajaxTest == true){
$.get("?page_number=" + (next_pagenumber).toString(), function(data) {
ajaxTest = false;
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');
}
}
此外,这是一个jsFiddle http://jsfiddle.net/5eh2b7fb/1/