2016-09-12 19 views
0

我最近學習了SQL,Ajax和(面向對象)PHP的基礎知識,我通過創建用戶構建信息源來使用它。但是,目前Feed只會加載數據庫中最近發佈的20個帖子(因爲一次加載所有帖子會對頁面加載時間產生負面影響)。這是在我的網站上創建無限滾動系統的正確方法嗎?

我已經決定試圖實現一個無限滾動系統(類似Twitter和Facebook使用的方法)將是這個問題的最佳解決方案,但我不完全確定如何做到這一點。

我知道我需要的第一件事是判斷用戶是否已到達頁面底部的函數。要做到這一點,我已經寫了下面的簡單的jQuery:

$(window).scroll(function() { 
    var scrollBottom = $(document).height() - $(document).scrollTop() - $(window).height(); 
    if(scrollBottom < 200) { 
     // send Ajax request 
    } 
    }); 

這段代碼應該工作,但我關心的多個Ajax請求的風險被髮送到服務器之前,如果用戶滾動多次帖子的提要已更新。

我收集到我需要做的下一件事是發送一個Ajax請求。當然,目前檢索第20個職位在數據庫中的腳本使用看起來像

$query = "SELECT * FROM table DESC LIMIT 0,20"; 

我猜,我需要的東西來代替這一條線,如PHP/SQL的

$query = "SELECT * FROM table DESC LIMIT " . $x . "," . $x+20; 

然後創建另一個腳本來跟蹤Ajax請求已發送多少次,並使用它來確定變量$ x以確保獲取正確的結果。

最後我知道我需要創建某種回調函數來顯示已被提取的帖子。

這是用來創建無限滾動系統的正確(最佳)方法嗎? 另外,我怎麼能改變jQuery停止多個請求被髮送?

+1

定義'正確' – Strawberry

+0

如果它工作=正確。如果不是=不正確 – nogad

+0

您可能會覺得這個有趣:http://midnightprogrammer.net/post/Infinite-Scrolling-In-ASPNET-With-jQuery/ – Velocibadgery

回答

0

是的你是正確的,你正在尋找的是$query = "SELECT * FROM table DESC LIMIT " . $x . ", 20";應該得到接下來的20行,並防止更多的被獲取,直到$x更新。

相關問題