簡體   English   中英

為什么“無限滾動”不會停止加載內容?

[英]Why doesn't the 'infinite scroll' stop loading content?

我正在使用“無限滾動”腳本,即使沒有更多記錄,該腳本也會不斷向數據庫發送請求。 發生這種情況時,它將重新加載頁面上的最后一組。 我希望函數在到達數據庫的最后一條記錄時停止運行。 我是JS的新手,所以這對我來說很難解決,而且我沒有使用jQuery。 我正在PHP腳本中完成大部分工作。

我在這里閱讀了很多有關“無限滾動”的文章,但我無法理解其他人如何檢查JS中的限制。

的JavaScript

function loadPosts(){
    var target = document.getElementById('PostsContainer');
    var contentHeight = target.offsetHeight;
    var yOffset = window.pageYOffset;
    var y = yOffset + window.innerHeight;
    if(y >= contentHeight){
        var xhr = ajaxObj("POST", "loadContent.php");
        xhr.onload = function(){
            target.innerHTML += xhr.responseText;
        }
        xhr.send("action=loadMore");
    }
}
window.onscroll = loadPosts;

的PHP

$sql = "SELECT * FROM posts WHERE post_type = 'a' ORDER BY post_date DESC LIMIT 2" //Original content on page

$totalPosts = 12; (query to DB)
$max = 1;
$current = 2; //Start on record after initial content

while($current < $totalPosts){
  $sql = "SELECT * FROM posts WHERE post_type = 'a' ORDER BY post_date DESC
  LIMIT $current, $max";
  $result = $db_link->query($sql);
  $posts_list += ... //Collect the data from DB
  $current++;
}
echo $posts_list;

無論我滾動多少次,即使在數據庫中的記錄用完之后,新內容也會繼續加載。 每當我到達頁面底部時,輸出就會不斷重復。 在這種情況下,我在數據庫中有7個帖子,我從7、6開始...然后我不斷收到5-1。

因此,在這種情況下,您可以做的是,只需從phpserver side在json中添加一個參數,該參數將告訴您是否存在數據,基於此,您可以停止調用loadPosts函數

所以基本上算法就像

... php

while($current < $totalPosts){
......................
......................

  if($current >= $totalPosts)
  {
     $getNext = False;
  }
  else
  {
   $getNext = True;
  }
}

... javasrcipt

function loadPosts(){

   if(!getNext)
     return false;
   else
   {
   ......................
   ......................
   }
}
window.onscroll = loadPosts;

希望這個策略對您有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM