2013-10-21 24 views
-1

查看數據表我無法實現此目標。現在我可以用不同的方式加載它們,使用ajax(通過使用服務器端)不同的行和不同的順序,但現在我不能加載行例如4或5次,使多個請求ajax(我想使用滾動加載一點一點)。如何在數據表中一點點地加載ajax數據表

我該怎麼做?

+1

嗯,其中之一,你永遠不會想在任何時候在頁面上存在數百萬行,因此,如果不先刪除以前的行,你永遠不會想要加載更多的行。我建議使用數據表+服務器端分頁,因爲當用戶點擊「下一頁」或「上一頁」時,表中的內容將被來自服務器的一組新行替換,無論它們來自ajax請求或從整個頁面重新加載。 –

+0

作爲@Kevin說我會從服務器端分頁 –

+0

好吧,邏輯是你說的,但這意味着我們不能一點一點地加載它們? – itaka

回答

3

如何修改您的ajax加載x行數,從第一個開始,然後當最後一個條目的頂部偏移量進入視圖時,您可以在同一個文件上觸發另一個ajax事件,但使用x來知道最後一行是加載的,所以它會知道哪一行開始加載?

所以說,它最初加載0-5行,當5進入視圖時,它觸發一個事件,它將通過相同的ajax但值爲5,所以它會從6開始,並加載下6行,等等你可以使用相同的函數進行初始和後續加載,它只會被附加到主元素的html中。

編輯 好了,所以我們需要一個PHP文件,拉動和格式化數據,和包含Ajax和顯示所有的HTML文件。

爲PHP,是這樣的:

$offset = 0; 
$sql = "SELECT * FROM table ORDER BY id LIMIT 20, ".$offset; 

然後運行一個循環來格式化您希望他們成爲行。

這將最初填充20頁的偏移量,默認爲0。

然後對於Ajax,有兩部分。首先是對最後一項映入眼簾創建一個動作:

var go = true; 
function hitbottom() { 
    var sh = $(window).scrollTop(); 
    var wh = $(window).height(); 
    var ih = $('.item').last().offset().top; 
    if ((sh+wh)<ih && go) { 
     //run ajax 
    } 
} 

這應該上滾動運行時的最後一個項目的頂部碰到屏幕下方觸發。

第二個是創建ajax表單,它需要知道顯示的最後一行的id。它將使用該值來更改PHP文件中偏移量變量的值,然後該文件將獲得接下來的20行並將它們發送回jquery以附加到回調中的html,依此類推...

ajax部分應設置爲false,然後在回調中將其設置爲true以重新開始。

要追加的數據,你可以使用這樣的事情:

$('#element').append(data); 

這是未經測試,只是一個想法。我可以想象它與你的Facebook feed如何加載相似。一旦你點擊底部,它彈出加載圖標,並加載下一組職位。只有這樣,它纔會在你觸及底部之前開始加載,所以除非你馬上噴射,否則它應該能夠很快地獲得新的數據。

這也允許您逐漸增加html文件內容,而不會一次加載大量內容並放慢速度。可能仍然有限制,但它應該相當大。

+0

我想要的,但我不知道如何觸發與數據表的請求ajax,我剛剛第一次(默認情況下,是自動)解僱。即使我開啓了它,我也不知道如何在回覆中添加數據。你可以給我一個線索嗎? – itaka

+0

我更新了主要部分的初始答案。在表單提交中搜索如何通過ajax將變量傳遞給php文件,然後通過獲取頁​​面上當前列出的行數並減去1得到新的偏移量,並將其傳遞給php文件以供下一個結果集。 – FiLeVeR10

相關問題