0

我的代码如下:问题是当我滚动到页面末尾时,它将多次加载数据。如果页面中有 10 个元素,并且我从“/api/get_more_application/10”加载数据,但是在加载完成之前,jquery 会在将 dom 添加到页面之前第二次将 ajax 发送到“/api/get_more_application/10”,所以也许解决方案应该是这样,在最后一个请求完成之前,你不能向 url 发送第二个请求,怎么做?谢谢

$(document).ready(function(){
    var window_height = $(window).height(); 
    var i = 1; 
    $(window).scroll(function () { 
        var page_height = $(document.body).height(); 
        var scroll_top = $(window).scrollTop(); 
        var delta = page_height-window_height-scroll_top;   
        if(delta<100){ 
            random_number = Math.random();
            dom_num = $(".item").size();
            $.get("/api/get_more_application/"+dom_num+"?"+random_number,function(data,status){
                var json_data = jQuery.parseJSON(data);
                data_list_length = json_data.data_list.length;

                if (data_list_length === 0){
                    $(".nodata").show();
                }

                $.each(json_data.data_list,function(){
                    var dict_data = {
                        "admin": admin,
                        "id": this.id,
                        "limit_save_number": this.limit_save_number,
                        "employeeid": this.employeeid,
                        "appname": this.appname,
                        "filetype": this.filetype,
                        "applicant_im": this.applicant_im,
                        "onlinestor_quota": this.onlinestor_quota,
                        "employee": this.employee,
                        "apply_content": this.apply_content
                    };

                    $.get("approveditem.html",function(html_data,status){
                        replaced_str = html_data.replace(/<<(\w+?)>>/g,function($0,$1){ 
                            var value = dict_data[$1];
                            return value;
                        });
                        $("#items_container").append(replaced_str);
                    })
                });
            });
            auto_data_set();    
        };  
    });
});
4

1 回答 1

1

试试 jQuery 的 sleep 功能:

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

调用函数:

睡眠(1000);// 1秒

于 2013-10-09T09:54:16.460 回答