2011-11-18 40 views
0

我试图代码无尽的分页和具有麻烦无尽分页帮助jQuery的/ PHP

$(document).ready(function(){ 

     function lastPostFunc() 
     { 
      $('div#lastPostsLoader').html('<div class="load"><div class="label"><font color="black"><b>Loading more...</b></font></div></div>'); 
      $.post("cr/sc/scr.php?lastID="+$(".comment:last").attr("id"), 

      function(data){ 
       if (data != "") { 
       $(".comment:last").after(data);   
       } 
       $('div#lastPostsLoader').empty(); 

      }); 
     }; 

     $(window).scroll(function(){ 
      if ($(window).scrollTop() == $(document).height() - $(window).height()){ 

       lastPostFunc(); 
      } 
     }); 

    }); 

在这里不用我的PHP

$result = mysql_query('SELECT * FROM xyz ORDER BY sy DESC LIMIT 15'); 

      while($row = mysql_fetch_object($result)) { 
       $i++; 
             echo "<div class='comment' id='" . $i. "'>"; 
       } 

和其他网页抓取数据

$皮克= $ _GET ['lastID'];

$ i = $ pg; $ result = mysql_query('SELECT * FROM xyz ORDER BY sy DESC LIMIT'。$ pg。',15');

  while($row = mysql_fetch_object($result)) { 
       $i++; 
          echo "<div class='comment' id='" . $i . "'>"; 
} 

林在获得评论的价值得到了一个问题:第2次之后最后:最后

我得到评论的15值:去年第1次事件加载后

我得到评论的15值事件负载

这是问题的IM预计30

和第3次的事件occures它给了30

和同proccess再次30,30,40,40,50,50

,而不是30,40,50,60,70,80

我试图jQuery的生活(),我用$ _GET导致im从URL中提取

+0

我删除了我的答案。我的坏,你的代码完美的作品。你有没有检查你的评论:最后的ID是? id和get值有什么区别吗?在事件 – tuze

+0

IM刚开问题只 fireing其对PHP和数据库完善 – Smit

回答

0

检查以查看您是否正在将函数加载到其他位置,因为该函数将加载并停在我的,并且唯一的方法是我可以让它模仿您所说的是如果我加载函数再次在页面加载,这将同时创建两个电话。导致1-15和1-15以及页面上的最后一个数字。然后在滚动它加载函数,因为它应该和继续加载,就像你也告诉它。

另外,请确保您正在检查直接进入数据库的文件(或者即使您使用了文章)。这是要求注射。

编辑:如果您有数据,您应该首先加载整个页面(和过去)。然后加载滚动功能,如果页面未满,将不会加载。这就是为什么它停止了我。

EDIT2:这是我使用的代码,以防万一你想看到。我做了一个模拟数据库,所以我不需要匹配一个db来测试。

<?php 
$scroller = 30; 

if (isset($_GET['hold']) && $_GET['hold'] == '1') { 
    $i = isset($_GET['lastID'])?(int)$_GET['lastID']:0; 
    $j = $i + $scroller; 
    //sleep(10); 
    while($i < $j) { // mimic a mysql call and spit it out. 
     ++$i; 
     echo "<div class='comment' id='${i}'>${i}</div>"; 
    } 
    exit; 
} 
?> 
<html> 
<head> 
<script src="jquery-1.7.min.js" type="text/javascript"></script> 

<script type="text/javascript">  
// I was doing something else with this, but stripped out the code 
var scroller = <?php echo $scroller;?>; 
$(document).ready(function(){ 
    function lastPostFunc() 
    { 
     // this assumes there are already comments on the page, so put a dummy comment 
     var last = $(".comment:last").attr("id"); 

     $('div#lastPostsLoader').html('<div class="load"><div class="label"><font color="black"><b>Loading more...</b></font></div></div>'); 
     $.post("<?php echo $_SERVER['PHP_SELF']; ?>?hold=1&lastID="+last, 

     function(data){ 
      if (data != "") { 
       $(".comment:last").after(data);   
      } 
      $('div#lastPostsLoader').empty(); 
     }); 
    }; 

    $(window).scroll(function(){ 
     if ($(window).scrollTop() == $(document).height() - $(window).height()){ 
      lastPostFunc(); 
     } 
    }); 
    lastPostFunc(); 
}); 
</script> 
</head> 
<body> 

<div class="comment_container"> 
    <div class="comment" id="0"></div> 
    <div id="lastPostsLoader"></div> 
</div> 

</body> 
</html> 
+0

我在主索引文件只JS我 西港岛线刚刚得到scr.php 我不是让你的结果,你的意思是谓事件被解雇2次 – Smit

+0

当我实现相同的代码,它只发射一次,如此1-15。然后,当我加起来30时,它是1-30,页面上有30。触发滚动,所以它是1-30,然后滚动到30触发31-60。所以基本上,除了时间不够长之外,它的工作。我能得到1-15,1-15的唯一方法是如果代码被激发两次。 – craniumonempty

+0

如果您在同一页面运行php sql调用(您可能不是,但在测试时执行此操作),请确保在调用它时退出。无论哪种方式,测试该页面以外的jquery,看看它是否加载正常。 – craniumonempty