实时Feed:不知道如何保存提交的内容

时间:2011-05-08 20:53:03

标签: php javascript jquery ajax

Feed本身可以工作,但是它上面的间隔会自动更新,当我提交内容时,它会刷新页面并且不会保存任何内容。

jQuery代码:

jQuery(document).ready(function() {
    setInterval("showNewStories()", 5000);
});

function showNewStories() {
    $.getJSON("post.php", null, function(data) {
        if (data != null) {
            $("#stories").prepend($("<li><span class=\"story\">" + 
                data.story + "<br /><span class=\"date\">" + data.date + 
                "</span></li>").fadeIn("slow"));
        }
    });}

post.php中:

<?php 
echo json_encode(array( "story" => $_POST['dataS'],
                                        "date" => date('l jS \of F Y h:i:s A')));
?>

我想知道的是,我可以像Facebook的Feed那样提交内容,将其添加到Feed中,然后即使您刷新也会保留在那里。

2 个答案:

答案 0 :(得分:0)

如何在服务器上存储数据?数据需要存储在某个地方,可能是一个数据库,以便轻松获取最新的数据。

答案 1 :(得分:0)

我不是php专家,所以我不知道你是否已经这样做了,但是服务器端的代码应该接受一个参数,告诉它从哪个日期加载帖子。

然后,您应该在客户端的javascript中有一个变量,指示检索到的最新帖子的日期/时间。页面加载时,该值应为null。

然后,对showNewStories的调用会将带有最后日期时间的变量发送到服务器。在服务器上,如果变量传递给php页面,那么它将仅返回 发布日期时间更大的帖子,而不是发布的日期/时间。< / p>

然后,当您从服务器获得响应时,您可以将帖子添加到时间轴。添加最后一个时,将 日期时间存储为下次调用showNewStories时将传递给服务器的日期时间。

此逻辑中存在漏洞,如果服务器上的日期时间分辨率不足以处理收到的帖子数量的频率,则可能会遇到以下问题:时间x,您最多可以检索列表x,然后在x时接受另一个帖子。下次showNewStories拨打服务器时,您将错过第x次发布的第二篇帖子。

要使这个防弹,您可以更改服务器上的逻辑,以包括发布时间等于传入的日期时间的任何帖子。您还将返回传递回客户端的每个帖子的唯一ID

然后,在客户端,当调用getJSON的回调时,您将包括帖子的日期时间大于提交给服务器的时间的任何项目日期时间相等,并且从服务器返回的帖子ID不在列表中(我建议将列表中的帖子的ID包含为data attribute)。