1

以下のコードは、Firefox19.0で意図したとおりに機能します。スクリプトはデータベースからランダムな記事をロードします。

Internet Explorerで同じコンテンツを繰り返しロードし、Chromeで2倍以上の異なるコンテンツをロードします。

<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)
{
$("#wrapper").append(html);
$('div#loadmoreajaxloader').hide();
}else
{
$('div#loadmoreajaxloader').html('<center>No more posts to show.</center>');
}
}
});
}
});
</script>

ここにloadmore.phpがあります

<?php
include('db.php');
$stmt = $db->prepare("SELECT * FROM db ORDER BY RAND() DESC LIMIT 9");
if($stmt->execute()){
while ($row = $stmt->fetch()) {
echo'
content here
';}}
?>
4

1 に答える 1

0

MySQL クエリにはオフセットがないため、常に同じ 9 つの要素を取得していると思います。

次のように、オフセットを追加してみてください。

loadmore.php について

$limit=9;
$limit_offset = $limit*$_GET['offset'];
$stmt = $db->prepare("SELECT * FROM db ORDER BY RAND() DESC LIMIT :limit OFFSET :offset");
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
$stmt->bindValue(':offset', $limit_offset, PDO::PARAM_INT);

JavaScript コードで:

<script type="text/javascript">
var offset = 0;

...

$.ajax({
    url: "loadmore.php",
    data: { offset: offset }
    success: function(html){
        if(html){
            offset++;
            $("#wrapper").append(html);
            $('div#loadmoreajaxloader').hide();
        } else {
            $('div#loadmoreajaxloader').html('<center>No more posts to show.</center>');
        }
    }
});
于 2013-03-02T15:55:00.880 に答える