我正在使用 XMLHttpRequest 从 mySQL 数据库检索更多帖子以显示在页面上。 第一次工作正常,但第二次和之后的多次它不知道要获取哪些帖子,因此它会一遍又一遍地获取第二次。 触发发送请求的不是具有特定 ID 的按钮。这是在页面末尾加载更多数据。 这是请求 XML 数据的代码:
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;
}
有人知道有什么方法可以做到这一点吗?我像 H ... l 一样被困住了 非常感谢您的帮助!
最佳答案
如果 nextId
是对您要从 XHR 检索的第一个帖子的引用,则每次请求新帖子时都需要增加它,或者在发送请求时增加设定的数量或基于您从服务器获得的响应数量。
如果不是,您应该向服务器请求的 URL 添加另一个参数,例如 '&postIndex='+postIndex
,并将 pageIndex
增加正如我上面提到的,每次从服务器获得的响应数。
在服务器端,只需从 pageIndex
中收到的数据启动 SQL 查询即可。
关于javascript - 我不知道如何在页面末尾加载第二次帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25594440/