我正在尝试编写无尽的分页并遇到麻烦
$(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. "'>";
}
和其他抓取数据的页面
$ pg = $ _GET [&#39; lastID&#39;];
$ I = $皮克; $ result = mysql_query(&#39; SELECT * FROM xyz ORDER BY sy DESC LIMIT&#39;。$ pg。&#39;,15&#39;);
while($row = mysql_fetch_object($result)) {
$i++;
echo "<div class='comment' id='" . $i . "'>";
}
我在获得评论价值方面遇到了问题:最后
我得到15条评论值:在第一次加载事件后持续
我得到15条评论值:在第二次加载事件后持续
这是我期待30的问题
并且在第3次事件发生时它给出30
和同样的过程再次30,30,40,40,50,50
而不是30,40,50,60,70,80
我试过jquery live(),我使用$ _GET导致我从URL
获取答案 0 :(得分: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>