2012-10-27 32 views
7

我打算做这个评论系统,其中注释可以发布和无刷新页面更新的(你可以看到这个在YouTube上)实时AJAX评论

发布评论是可以理解的(后到PHP页面由JavaScript和运行在服务器端的SQL查询来导入,比返回的注释和HTML获取)

更新是我不理解的部分。如何在特定时间间隔内自动刷新页面并添加评论?当多个用户同时发表评论时,这不会是一团糟吗?

我想知道如果任何人都可以推荐一个很好的方式(就像建议的话)来实现这一点,并节省了一些时间

回答

2

最常用的方法是调用的setTimeout或setInterval的JavaScript中轮询每5 25秒。基本上,你存储了你在javascript端收到的最后一条评论的想法,然后你调用一个函数将这个id发送到远程服务器。如果有比这个ID更新的消息,你可以通过XML或JSON发回所有的消息(通常json在JavaScript方面更容易处理,特别是如果你使用像jQuery这样的框架)。

+0

感谢,我可以试试这个 – Alexim

+2

JSON是可以没有的jQuery非常容易处理,用'JSON.parse'。 –

+0

@FelixKling我没有说任何相反的事情:)。 – ajacian81

1

可以使用的“长轮询”。基本上,这是一种技术,您可以在其中打开Ajax连接,并在服务器有一些响应发送之前不关闭。客户端收到此响应后会请求一个新的连接,并再次等待响应。

您可以检查教程:Simple Long Polling Example with JavaScript and jQuery

1

另一个真正的好方法是使用订阅/发布服务。

我使用PubNub此刻的通知,评论等..

0

我曾经用一个简单的技术(不使用定时器,总不刷新)有缺陷,它只显示新的意见,但不编辑并删除其他人对现有显示的评论。请注意,如果您允许“展开/折叠/查看更多”评论,那么刷新整个评论面板可能是不可行的。我简单的技术是有(我)来存储最后一个注释索引/ PrimaryKey的一个隐藏的输入元素显示出来(II)的几个唯一标识的div保持现有显示评论和Ajax刷新或HTML DOM操作只DIV时执行的操作在它上面(iii)一个div来保存更多的评论按钮,只有当有更多评论可供查看时才会显示该按钮。

因此,无论何时发布新评论,“查看更多评论面板上的按钮”都会被刷新为查看[X +(#其他人最近发表的新评论)+(#您的新评论)]评论。点击按钮后,它将显示3个新评论以及“查看更多评论”按钮。