2017-08-09 53 views
0

我已經實現了以下自動加載代碼。它從數據庫中提取結果,但是它一遍又一遍地循環執行相同的結果。自動加載結果一遍又一遍地獲取相同的結果

PHP代碼

<?php 
require_once("config.php"); 

$limit = (intval($_GET['limit']) != 0) ? $_GET['limit'] : 10; 
$offset = (intval($_GET['offset']) != 0) ? $_GET['offset'] : 0; 

$keywords = $_GET['keywords']; 

$sql = "SELECT * FROM blog_posts WHERE postCat LIKE '".$keywords."' ORDER BY postID ASC LIMIT $limit OFFSET $offset"; 
try { 
    $stmt = $DB->prepare($sql); 
    $stmt->execute(); 
    $results = $stmt->fetchAll(); 
} catch (Exception $ex) { 
    echo $ex->getMessage(); 
} 
if (count($results) > 0) { 
    foreach ($results as $res) { 
    echo '<h3>' . $res['postTitle'] . '</h3>'; 
    } 
} 
?> 
+0

您已初始化靜態$關鍵字。它有沒有改變?請在ajax中提醒關鍵字並檢查。 – AAT

+0

@AAT是的,它改變只是爲了測試目的,我增加了靜態。但問題是結果保持循環不停止 –

+0

關鍵字是獲取與數據庫列匹配的記錄,但是說如果有像「Lorem Ipsum」這樣的記錄顯示在屏幕上,並且越多,則縮小相同的結果一直顯示 –

回答

0

試試這個

<?php 
$keywords = 'events'; 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>Test</title>  
    <script src="bootstrap/js/jquery-1.11.1.min.js"></script> 
    </head> 
    <body> 

     <div class="col-lg-12" id="results"></div> 
     <div id="loader_image"><img src="loader.gif" alt="" width="24" height="24"> Loading...please wait</div> 
     <div class="margin10"></div> 
     <div id="loader_message"></div> 
     </div> 

<script type="text/javascript"> 
    var keywords = '<?php echo $keywords; ?>'; // Changed 
    var busy = false; 
    var limit = 15; 
    var offset = 0; 
    function displayRecords(lim, off) { 

    // Changed/New 
    var data = { 
     'limit': lim, 
     'offset': off, 
     'keywords': keywords, 
    }; 
     $.ajax({ 
     type: "GET", 
     async: false, 
     url: "getrecords.php", 
     data: data, // Changed 
     cache: false, 
     beforeSend: function() { 
      $("#loader_message").html("").hide(); 
      $('#loader_image').show(); 
     }, 
     success: function(html,textStatus,jqHXR) { 
      $("#results").append(html); 
      $('#loader_image').hide(); 
      if (html == "") { 
       $("#loader_message").html('<button class="btn btn-default" type="button">No records found.</button>').show() 
      } else { 
       $("#loader_message").css('display','none'); 
       $("#loader_message").html(html); 
      } 
      window.busy = false; 
     }, 
     }); 
    } 
    $(document).ready(function() { 
     // start to load the first set of data 
     if (busy == false) { 
      busy = true; 
      // start to load the first set of data 
      displayRecords(limit, offset); 
     } 
     $(window).scroll(function() { 
      // make sure u give the container id of the data to be loaded in. 
      if ($(window).scrollTop() + $(window).height() > $("#results").height() && !busy) { 


$('#result').on('scroll', function() { if($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) { busy = true; offset = limit + offset; setTimeout(function() { displayRecords(limit, offset); }, 500); } }) 
       // you can remove the above code and can use directly this function 
       // displayRecords(limit, offset); 
      } 
     }); 
    }); 
</script> 

    </body> 
</html> 
+0

試圖在最大化屏幕上約23條記錄負載時,它顯示15條記錄在默認情況下它不會再滾動無論是最大化或最小化,甚至像手機屏幕:( –

+0

擁有複製粘貼此代碼 – AAT

+0

是整個代碼如何複製粘貼 –

0

這一遍又一遍加載,因爲每個AJAX調用您發送相同的「數據」,這是

var data = { 
     'limit': limit, 
     'offset': offset, 
     'keywords': keywords, 
    }; 

更改爲使用新的限制功能相同的內容和偏移

function displayRecords(lim, off) { 
    data = { 
     'limit': lim, 
     'offset': off, 
     'keywords': keywords, 
    }; 
    $.ajax({ 
    type: "GET", 
    async: false, 
    url: "getrecords.php", 
    data: data, // Changed 
    cache: false, 
    beforeSend: function() { 
     $("#loader_message").html("").hide(); 
     $('#loader_image').show(); 
    }, 
    ... 
    ... 
+0

仍然沒有獲取所有記錄時,瀏覽器是最小化,甚至最大化 –

+0

總計我有23個記錄的事件,但它只顯示16,而不是滾動 –

+0

但我發送的代碼修復了相同的數據問題一次又一次地出現? –

相關問題