2012-08-08 213 views
2

我想讓這個無限的滾動腳本以我想要的方式工作。 但我不明白,如何檢測loadmore.php文件中的新帖子,所以它不會顯示頁面上的帖子?無限滾動

<script type="text/javascript"> 
$(window).scroll(function() 
{ 
    if($(window).scrollTop() == $(document).height() - $(window).height()) 
    { 
        $('div#loadmoreajaxloader').show(); 
        $.ajax({ 
        url: "loadmore.php", 
        success: function(html) 
        { 
            if(html) 
            { 
                $("#postswrapper").append(html); 
                $('div#loadmoreajaxloader').hide(); 
            }else 
            { 
                $('div#loadmoreajaxloader').html('<center>No more posts to show.</center>'); 
            } 
        } 
        }); 
    } 
}); 
</script> 

回答

5

不要試圖找出哪些帖子是新的。確保在JavaScript中,您知道上次加載的帖子(通過它的ID或其他方式),並將其發送到「loadmore.php」腳本。

你的webservice(loadmore.php)應該保持無狀態,你的前端(javascript)應該知道狀態(最後加載的id)。

1

好吧,簡單地說:你要存儲的信息。猜測在你嘗試加載的信息中有一些序列,你可以存儲哪個ID是最後一次返回的最後一個ID,並將這些信息作爲PHP腳本中新信息的起點。

+1

引用問題的整個文本有點多餘,不是嗎? – DaveRandom 2012-08-08 12:38:10

+0

@DaveRandom是嗎?我想我只是習慣了。如果它困擾人們,我會刪除它。 – 2012-08-08 12:39:53

+0

這裏沒有必要這麼做,所以SO的設計使得即使有很多答案它跨越多個頁面,問題仍然可以在每個頁面上看到。這不是你典型的論壇 - 它甚至不是真正的*論壇。 – DaveRandom 2012-08-08 12:41:33

0

爲什麼不在客戶端上創建一個變量,其中包含您嘗試加載的元素列表的最後一個ID或最後一個時間戳。然後你只需將這個值傳遞給服務器,然後你的php文件就可以使用這個值。

一個非常常見的例子是上次拍攝的時間戳。當你需要一些新的飼料,然後你只是發送這個時間戳到服務器,他需要例如下一個年齡較大,然後這5時間的飼料

+0

這是如何完成的? – 2012-08-08 14:15:32

0

要做到這一點,最好的方法是創建一個頁面,你可以飼料偏移到,它會查詢新帖子。這是我如何在WordPress的做到了這一點:

  1. 確保您餵養頁的偏移(URL):http://yourwebsite.com/more/?offset=20
  2. 然後得到的偏移量和運行具有偏移的查詢。
  3. 這時你不會有任何相同的結果...

我知道這聽起來很模糊的 - 所以我寫的代碼教程 - 護理看看? http://benjaminpotter.org/infinite-scroll/

+0

你還有這篇文章的鏈接嗎?那一個不工作了...... – 2015-05-28 16:39:37

+1

當然可以! @LeonGaban - 查看http://benpotter.me/infinite-scroll/ – 2015-07-21 10:44:16