Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在无止境滚动实现中发出一个ajax请求而不是多个请求_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 如何在无止境滚动实现中发出一个ajax请求而不是多个请求

Javascript 如何在无止境滚动实现中发出一个ajax请求而不是多个请求,javascript,jquery,ajax,Javascript,Jquery,Ajax,当用户滚动到底部时,我会将接下来的每10个出版物加载到提要中。问题是ajax发送多个请求,因为此代码检测到多个滚动到底事件。考虑到用户进一步向下滚动,如何发出一个ajax请求而不是多个 $(window).scroll(function() { if($(window).scrollTop() + $(window).height() > $(document).height() - 100) { $.ajax({

当用户滚动到底部时,我会将接下来的每10个出版物加载到提要中。问题是ajax发送多个请求,因为此代码检测到多个滚动到底事件。考虑到用户进一步向下滚动,如何发出一个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显然每次都有