Javascript 拉维公司;Ajax-foreachjson对象&;处理副本

Javascript 拉维公司;Ajax-foreachjson对象&;处理副本,javascript,php,jquery,json,ajax,Javascript,Php,Jquery,Json,Ajax,我正在尝试使用Ajax和Jquery制作一个简单的通知系统 到目前为止,我所做的是: 创建了一个php文件,我从中加载最新的帖子及其标题 从上面提到的包含最新帖子及其标题的php文件返回json 创建了ajaxpost请求,该请求使用success:function(data) 设置每5秒重复ajax调用的间隔 预编通知部门中的最新帖子标题 我遇到的问题是: 如果我将时间间隔设置为1分钟,并创建2个或更多新帖子,它将只提供较新的帖子(显然,因为我从我的->latest()调用了->firs

我正在尝试使用Ajax和Jquery制作一个简单的通知系统

到目前为止,我所做的是:
  • 创建了一个php文件,我从中加载最新的帖子及其标题
  • 从上面提到的包含最新帖子及其标题的php文件返回json
  • 创建了ajaxpost请求,该请求使用
    success:function(data)
  • 设置每5秒重复ajax调用的间隔
  • 预编通知部门中的最新帖子标题
我遇到的问题是:
  • 如果我将时间间隔设置为1分钟,并创建2个或更多新帖子,它将只提供较新的帖子(显然,因为我从我的
    ->latest()
    调用了
    ->first()
    ,否则它不会加载任何内容)

  • 正如我之前提到的,我的
    setInterval
    设置为5秒,然后它加载最新的帖子,并且每5秒加载一次,所以我每5秒就有一篇相同的新帖子,直到新帖子出现,我尝试通过只预写比上一篇更高的id来修复它,但我不确定这有多可靠

脚本: Notification.php:

$post = Post::latest()->first();
$post_title = $post->title;

return response->json(array('post' => $post, 'post_title' => $post));
使用AJAX查看:

function getnewnotif()
{
$.ajax({
type:'POST',
url: url_to_notification.php,
success: function(data){
$('#notif').prepend(data.post_title);
}
});
}

setInterval(getnewnotif(), 5000);

使用ID时,您无疑走上了正确的轨道,但更可靠的可能是创建(或更新)日期

在最简单的形式中,当您发送更多帖子的请求时,发送一个“last request date”参数。在服务器上,使用该选项仅获取在该日期之后创建(或修改-不确定您想要哪个)的帖子。在进行ajax调用的客户机上,您需要记住从服务器请求数据的最后日期,以便在下次ajax调用中使用它

但当涉及多个时区时,这将无法完全发挥作用

更可靠的方法是让服务器告诉您现在是本地时间。因此,您发送了第一个ajax调用,服务器还返回了发送数据的时间以及帖子列表。javascript获取该日期,在下一次ajax调用时,将该日期发送到服务器。然后,它可以返回给您的只是在该日期之后创建的新帖子。因为总是服务器日期和服务器日期,所以时区在这里并不重要


希望这有帮助

您使用ID的方法肯定是正确的,但更可靠的可能是创建(或更新)日期

在最简单的形式中,当您发送更多帖子的请求时,发送一个“last request date”参数。在服务器上,使用该选项仅获取在该日期之后创建(或修改-不确定您想要哪个)的帖子。在进行ajax调用的客户机上,您需要记住从服务器请求数据的最后日期,以便在下次ajax调用中使用它

但当涉及多个时区时,这将无法完全发挥作用

更可靠的方法是让服务器告诉您现在是本地时间。因此,您发送了第一个ajax调用,服务器还返回了发送数据的时间以及帖子列表。javascript获取该日期,在下一次ajax调用时,将该日期发送到服务器。然后,它可以返回给您的只是在该日期之后创建的新帖子。因为总是服务器日期和服务器日期,所以时区在这里并不重要


希望这有帮助

非常感谢您,我将尽我最大的努力将您的解决方案集成到我的代码中,然后我将返回结果并将其标记为答案(如果我成功):非常感谢您,我将尽我最大的努力将您的解决方案集成到我的代码中,然后我将返回结果并将其标记为答案(如果我成功):