首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加载和停止基于Ajax的垂直滚动函数+ gif图像加载器

如何加载和停止基于Ajax的垂直滚动函数+ gif图像加载器
EN

Stack Overflow用户
提问于 2017-08-14 18:28:14
回答 1查看 279关注 0票数 0

我未能完全做到这一点。问题是这个函数只工作一次,然后停止。我错过了一个循环吗?

我尝试过将else { }块移动到任何地方,但是没有帮助。我也试图把条件else if (data==''),但这也没有帮助。

如果我移动这个函数

代码语言:javascript
复制
if($(window).scrollTop() + $(window).height() > $("#load_data").height() && action == 'inactive') {

if(data !=='')之外,我的滚动函数和gif映像即使在最后一个原始数据从数据库中获取之后也不会停止。

任何帮助都将不胜感激。谢谢!

代码语言:javascript
复制
<script>
var limit = 20;
var start = 0;
var action = 'inactive';
var timeOutId;

function load_city_data(limit, start) {
    $.ajax({
        url:"ps_load_data.php",
        method:"POST",
        data:{limit:limit, start:start},
        cache:false,
        success:function(data) {
            $('#load_data').append(data);
            if(data !== '') {
                $('#imgLoader').html('<img class="animated-gif" src="img/ajax-loader.gif">');
                action = "inactive";
                $(window).scroll(function(){
                if($(window).scrollTop() + $(window).height() > $("#load_data").height() && action == 'inactive') {
                    action = 'active';
                    start = start + limit;
                    timeOutId = setTimeout(function(){
                        load_city_data(limit, start);
                    }, 1000);
                }
            else {
                $('#load_data_message').html('<div class="reached">You have reached at the end of the listings</div>');
                action = 'active'; 
                $(window).off('scroll');
                clearTimeout(timeOutId);
                $('img[src="img/ajax-loader.gif"]').remove();
            }
            });
            } 
        }
    });
}
$(document).ready(function(){
    if(action == 'inactive') {
        action = 'active';
        load_city_data(limit, start);
    }
});
</script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-24 12:31:17

这里提到的答案是:How to stop my scroll function once MySql has fetched all the data

,这也是工作脚本

代码语言:javascript
复制
 $(document).ready(function(){
 var limit = 100;
 var start = 0;
 var action = 'inactive';
 function load_country_data(limit, start)
 {
  $.ajax({
   url:"ps_load_data.php",
   method:"POST",
   data:{limit:limit, start:start},
   cache:false,
   success:function(data)
   {
    $('#load_data').append(data);
    if(data == '')
    {
     $('#load_data_message').html("No Data Found");
     action = 'active';
    }
    else
    {
     $('#load_data_message').html("<img src='img/ajax-loader.gif'>");
     action = "inactive";
    }
   }
  });
 }
 if(action == 'inactive')
 {
  action = 'active';
  load_country_data(limit, start);
 }
 $(window).scroll(function(){
  if($(window).scrollTop() + $(window).height() > $("#load_data").height() && action == 'inactive')
  {
   action = 'active';
   start = start + limit;
   setTimeout(function(){
    load_country_data(limit, start);
   }, 2000);
  }
 });
});

只需确保您的url:"ps_load_data.php“只有一个正在运行的获取查询,否则它将发生冲突,甚至在获取最后一行数据之后也不会隐藏/停止您的gif图像。谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45680741

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档