2013-10-09 138 views
0

我的代碼如下: 問題是當我滾動到頁面的結尾時,它會加載數據很多次。如果我在頁面中有10個元素,並且我加載來自「/ api/get_more_application/10」的數據,但在加載完成之前,jquery會在dom添加到頁面之前第二次將ajax發送到「/ api/get_more_application/10」,所以解決方案應該可以在最後一次請求完成之前,不會再向url發送第二個請求,該怎麼做? THX如何設置ajax加載的延遲

$(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();  
     }; 
    }); 
}); 

回答

1

嘗試jQuery的睡眠功能:

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

調用的函數:

睡眠(1000); //1秒

+0

是否有更好的辦法嗎?如果只是設置一個超時,如果網絡是非常糟糕的,它會加載數據很長一段時間,並會出現一些錯誤 – young001

+0

睡眠會在頁面上的一些攤位,它使網絡嚴重 – young001

+0

是的,我看到你的問題。這可能是您的解決方案: http://stackoverflow.com/questions/16956116/is-it-possible-to-run-code-after-all-ajax-call-completed-under-the-for-loop-stat http://api.jquery.com/jQuery.when/ –