7

我打算制作这个评论系统,可以在不刷新页面的情况下发布和更新评论(你可以在 youtube 上看到)

发表评论是可以理解的(从 javascript 发布到 php 页面并在服务器端运行 SQL 查询以导入它,而不是返回评论并以 html 获取)

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

我想知道是否有人可以推荐一种好方法(就像忠告一样)来实现这一目标并节省我一些时间

4

4 回答 4

2

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

于 2012-10-27T01:48:28.660 回答
1

Another really good way would be using a subscribe/publish service.

I'm using PubNub at the moment for Notifications, Comments ect..

于 2012-10-27T02:33:55.600 回答
1

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

您可以查看教程:使用 JavaScript 和 jQuery 的简单长轮询示例

于 2012-10-27T02:15:09.147 回答
0

我曾经使用过一种简单的技术(不使用计时器,不完全刷新),它的缺陷是它只显示新评论,而不是其他人对现有显示的评论进行的编辑和删除。请注意,如果您允许“展开/折叠/查看更多”评论,刷新整个评论面板可能不可行。我的简单技术是(i)一个隐藏的输入元素来存储显示的最后一个评论的索引/主键(ii)几个唯一标识的 div 来保存现有显示的评论和 ajax 刷新或 html dom 操作仅当执行操作时该 div (iii) 一个 div 来保存查看更多评论按钮,只有在有更多评论要查看时才会显示该按钮。

因此,每当发布新评论时,“带有按钮的查看更多评论面板”将刷新并显示查看 [X + (# 最近其他人的新评论) + (# 您的新评论)] 评论。单击该按钮后,它将显示另外 3 条新评论以及“查看 Y 更多评论”按钮。

于 2012-10-27T03:30:56.360 回答