我无法弄清楚如何在页面末尾加载第二次帖子

时间:2014-08-31 17:23:39

标签: javascript php jquery mysql

我正在使用XMLHttpRequest从mySQL数据库中检索更多帖子以在页面上显示。 它第一次正常工作,但第二次和之后,它不知道要获得哪些帖子,所以它会一次又一次地继续获得第二次。 触发发送请求的不是具有特定ID的按钮。它是在页面末端加载更多数据。 这是Requesting XMLdata的代码:

if (window.XMLHttpRequest) 
{ xmlhttp=new XMLHttpRequest(); } 
else  { 
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  }
xmlhttp.onreadystatechange=function() 
{
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
wrap.innerHTML += xmlhttp.responseText; }
}
xmlhttp.open("GET","getposts.php?q="+nextId);
xmlhttp.send(); 

以下是在页面末尾加载更多数据的代码:

function yHandler(){
var wrap = document.getElementById('wrap');
var contentHeight = wrap.offsetHeight;
var yOffset = window.pageYOffset; 
var y = yOffset + window.innerHeight;
if(y >= contentHeight)
{
//--- Requsting XMLdata goes here ---
}
var status = document.getElementById('status');
status.innerHTML = contentHeight+" | "+y;
}
window.onscroll = yHandler;    

我曾尝试使用$ _SESSION来节省用户请求帖子的时间,所以我每次都可以添加+1,但价值会像疯了一样增加。首先它是0然后是4,第三次是9或类似的东西。 以下是我在HTML标记之前的第一个使用SESSION的方法:

session_start();
if(isset($_SESSION['ordning']))
{
$_SESSION['ordning'] = $_SESSION['ordning'] + 1 ;
}
else
{
$_SESSION['ordning']=0;
}

有人知道这样做的方法吗?我被卡住了......我 非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果nextId是您要从XHR检索的第一篇帖子的引用,则每次请求新帖子时都需要增加它,可以在发送请求时按设定金额增加,也可以基于您从服务器获得的回复数量。

如果不是,您应该向您从服务器请求的网址添加另一个参数,例如'&postIndex='+postIndex,并按照您获得的回复数量增加pageIndex每次都是服务器,如上所述。

在服务器端,只需从pageIndex中收到的数据启动SQL查询。