javascript - 我不知道如何在页面末尾加载第二次帖子

标签 javascript php jquery mysql

我正在使用 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/

相关文章:

javascript - 使用 Javascript 更改没有 id 的 DOM 元素的 css

php - Android JSON 仅在 Froyo 上运行,不适用于更高版本

php - php 如何判断是否按下了未知 ID 的按钮

javascript - 使用 javascript 以编程方式更改时重新验证元素

javascript - 在javascript数组中执行集合计算

javascript - 在 Promise 中传递变量

javascript - 如何使 Bootstrap 中 col 内的元素比 col 宽?

php - 将 smtp 端口从 25 更改为 587?

jquery - 使用 'link_to' 和 jQuery 时遇到问题

java - 从 Web 应用程序 GUI 创建数据库备份