2017-08-09 55 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

但我发送的代码修复了相同的数据问题一次又一次地出现? –

相关问题