gpt4 book ai didi

php - Ajax php/mysql 在非常活跃的提要上加载更多按钮

转载 作者:行者123 更新时间:2023-11-28 23:19:53 24 4
gpt4 key购买 nike

我终于实现了加载更多按钮,并使用 ajax 在我的页面上加载了更多数据,下面的代码效果很好。

但是,由于它是一个事件提要,它总是在更新,所以开始和偏移量总是不准确的。

例如

页面加载表包括

  • 第 8 项
  • 第 7 项
  • 第 6 项
  • 第 5 项
  • 第 4 项
  • 第 3 项
  • 第 2 项
  • 项目 1

当我点击加载更多按钮以获取更多 5 个帖子时,由于有新事件,它可能会变成这样

  • 第 10 项
  • 第 9 项
  • 第 8 项
  • 第 7 项
  • 第 6 项
  • 第 5 项
  • 第 4 项
  • 第 3 项
  • 第 2 项
  • 项目 1

利用上面偏移量5和限制5的逻辑,当没有更新时我会得到

Item 3, Item 2, Item 1

但是因为有更新,我最终重复显示了项目 5 和项目 4,因为偏移量现在对于 mysql 表中的新数据是错误的。

Item Item 5(already displayed), Item 4(already Displayed), item 3, item 2 item 1

问题:我认为这可能是事件提要的常见问题。感谢任何帮助

$(document).ready(function() {
var a = 5; /*5 items already loaded on page load, so my start count will be 5*/
$("#showMoreActivity").on("click", function(b) {
b.preventDefault(), $.ajax({
url: "/activty/",
type: "POST",
dataType: "JSON",
data: {
start: a
},
success: function(data) {
if (data.length == 0) {
$("#showMoreActivity").addClass("disabled");
$("#showMoreActivity").html("End of Activity List");
} else {
a += 5;
$("#activity-feed").append(data);

}

}
});
});
});

在 PHP 端我有类似下面的东西(简化/修改)

public function getAgentActivity($start = 0, $limit = 5) {
$query = $this->db->prepare('SELECT * from activity WHERE ORDER BY created DESC LIMIT :limit OFFSET :offset');

if ($result = $query->execute(array(
':limit' => $limit,
':offset' => $start
))) {
//query success, fetch data and do something
}
}

最佳答案

为此,您可以使用基于游标的分页。例如,不使用限制和偏移量,而是使用记录的创建时间来分页。在每个请求上发送最后记录创建时间并相应地发送响应。对于这种工作方法,您的记录必须按创建时间排序,并且创建时间字段应该是唯一的。您也可以使用自动增量主键。

更多详情 See here

关于php - Ajax php/mysql 在非常活跃的提要上加载更多按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42199012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com