Javascript 如何在无止境滚动实现中发出一个ajax请求而不是多个请求
当用户滚动到底部时,我会将接下来的每10个出版物加载到提要中。问题是ajax发送多个请求,因为此代码检测到多个滚动到底事件。考虑到用户进一步向下滚动,如何发出一个ajax请求而不是多个Javascript 如何在无止境滚动实现中发出一个ajax请求而不是多个请求,javascript,jquery,ajax,Javascript,Jquery,Ajax,当用户滚动到底部时,我会将接下来的每10个出版物加载到提要中。问题是ajax发送多个请求,因为此代码检测到多个滚动到底事件。考虑到用户进一步向下滚动,如何发出一个ajax请求而不是多个 $(window).scroll(function() { if($(window).scrollTop() + $(window).height() > $(document).height() - 100) { $.ajax({
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
$.ajax({
url: '/more/',
type:'GET',
dataType: 'json',
data:2,
success: function (data) {
alert(data);
}
});
}
});
试试这个
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() == $(document).height()) {
alert("bottom!");
}
});
试试这个
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() == $(document).height()) {
alert("bottom!");
}
});
使用锁检查ajax是否仍在运行,在通过ajax接收数据之前不要进行下一次ajax调用,然后可以释放锁。
var lock = false;
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
if(lock==true){
return;
}
lock = true;
$.ajax({
url: '/more/',
type:'GET',
dataType: 'json',
data:2,
success: function (data) {
alert(data);
}
}).always(function() {
lock = false;
});
}
});
使用锁检查ajax是否仍在运行,在通过ajax接收数据之前不要进行下一次ajax调用,然后可以释放锁。
var lock = false;
$(window).scroll(function() {
if($(window).scrollTop() + $(window).height() > $(document).height() - 100) {
if(lock==true){
return;
}
lock = true;
$.ajax({
url: '/more/',
type:'GET',
dataType: 'json',
data:2,
success: function (data) {
alert(data);
}
}).always(function() {
lock = false;
});
}
});
试试这个:
$(窗口)。滚动(函数(){
if($(窗口).scrollTop()+$(窗口).height()>$(文档).height()-100){
var jqXHR=$(document).data(“jqXHR”);
if(jqXHR){
返回;
}
jqXHR=$.ajax({
url:“/more/”,
键入:“GET”,
数据类型:“json”,
数据:2,
成功:功能(数据){
警报(数据);
}
});
$(文件).data(“jqXHR”,jqXHR);
jqXHR.always(函数(){
$(文档).removeData(“jqXHR”);
});
}
});代码>请尝试以下操作:
$(窗口)。滚动(函数(){
if($(窗口).scrollTop()+$(窗口).height()>$(文档).height()-100){
var jqXHR=$(document).data(“jqXHR”);
if(jqXHR){
返回;
}
jqXHR=$.ajax({
url:“/more/”,
键入:“GET”,
数据类型:“json”,
数据:2,
成功:功能(数据){
警报(数据);
}
});
$(文件).data(“jqXHR”,jqXHR);
jqXHR.always(函数(){
$(文档).removeData(“jqXHR”);
});
}
});代码>是否希望函数只启动一次?或者每次滚动到底部都会触发一次?@user2085143显然每次都会触发一次,您希望函数只触发一次吗?或者每次滚动到底部都会有一次?@user2085143显然每次都有