我试图使用Ajax和Jquery创建一个简单的通知系统。
data
success: function(data)
参数从json及其名称中获取最新帖子
如果我将间隔设置为1分钟并创建2个或更多新帖子,则只会提供较新的帖子(显然,因为我从->first()
调用了->latest()
,否则它将无法加载任何东西)
正如我之前提到的,我的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);
答案 0 :(得分:0)
您肯定使用ID正确,但更可靠的是创建(或更新)日期。
以最简单的形式,当您发送更多帖子的请求时,请发送“最后请求日期”参数。在服务器上,使用它只捕获日期之后已创建(或修改 - 不确定您想要的)的帖子。在您进行ajax调用的客户端上,您需要记住从服务器请求数据的最后日期,以便在下一次ajax调用中使用它。
但是当涉及多个时区时,这将无法很好地发挥作用。
更坚固的方法是让服务器告诉您当地时间。因此,您发送第一个ajax调用,以及帖子列表,服务器还会返回它向您发送数据的时间。你的javascript抓住那个日期,在你的下一个ajax调用中,你将它发送到服务器。然后,它可以返回到您在该日期之后创建的新帖子。由于它始终是服务器日期与服务器日期,因此时区无关紧要。
希望这有帮助!