最近做了一個需要無限加載的項目,為了避免頁面加載耗時過長,我使用了jquery的ajax方法來實現無限加載。
首先,在頁面加載時,我們需要先加載第一頁的數據,并將下一頁的url存儲到一個隱藏的input里。
$(function(){ $.ajax({ url: "url_of_first_page", success: function(data){ $('div.result').append(data); //將第一頁數據放入result容器 var next_page_url = $(data).find('div.next_page_url').text(); //從返回的數據中獲取下一頁的url $('input.next_page_url').val(next_page_url); //將下一頁的url存入隱藏的input中 } }); });
然后,我們需要監聽滾動事件,在滾動到頁面底部時,使用ajax請求下一頁數據,并將下一頁的url再次存儲到隱藏的input中。
$(window).scroll(function(){ var scroll_top = $(this).scrollTop(); //獲取當前滾動條位置 var document_height = $(document).height(); //獲取頁面總高度 var window_height = $(this).height(); //獲取窗口高度 if(scroll_top == document_height - window_height){ //判斷是否到達頁面底部 var next_page_url = $('input.next_page_url').val(); //獲取下一頁的url $.ajax({ url: next_page_url, success: function(data){ $('div.result').append(data); //將下一頁數據放入result容器 var next_next_page_url = $(data).find('div.next_page_url').text(); //從返回的數據中獲取下下一頁的url $('input.next_page_url').val(next_next_page_url); //將下下一頁的url存入隱藏的input中 } }); } });
最后,記得在ajax請求前,顯示“加載中”的提示,并在ajax請求結束后,隱藏提示。
$(document).ajaxStart(function(){ $('div.loading').show(); }).ajaxStop(function(){ $('div.loading').hide(); });
這樣,就可以實現無限加載了。