我打算建立这样一个评论系统,可以在不刷新页面的情况下发布和更新评论(你可以在youtube上看到这个)
发表评论是可以理解的(从javascript发布到php页面并在服务器端运行SQL查询导入它,而不是返回注释并在html中获取)
更新是我不理解的部分。如何在特定时间间隔自动刷新页面并添加注释?当多个用户同时尝试发表评论时,这不是一团糟吗?
我想知道是否有人可以推荐一个好的方法(就像建议的话)来实现这个并节省我一些时间
答案 0 :(得分:2)
最常见的方法是在javascript中调用setTimeout或setInterval以每5-25秒轮询一次。基本上,你存储了你在javascript端收到的最后一条评论的想法,然后你调用一个函数将这个id发送到远程服务器。如果有比这个id更新的消息,你可以通过XML或JSON发回所有消息(通常json在javascript方面更容易处理,特别是如果你使用像jQuery这样的框架)。
答案 1 :(得分:1)
您可以使用“长轮询”。基本上,这是一种打开Ajax连接的技术,服务器在发送响应之前不会关闭。收到此响应后,客户端会请求新连接并再次等待响应。
您可以查看教程:Simple Long Polling Example with JavaScript and jQuery。
答案 2 :(得分:1)
另一个非常好的方法是使用订阅/发布服务。
我目前正在使用PubNub进行通知,评论等..
答案 3 :(得分:0)
我曾经使用过一种简单的技术(没有使用计时器,没有全部刷新),它有一个缺陷,它只显示新的注释,但不会被现有显示注释的其他人编辑和删除。请注意,如果您允许“展开/折叠/查看更多”评论,刷新整个评论面板可能是不可行的。我的简单技巧是(i)一个隐藏的输入元素来存储显示的最后一个注释的索引/主键(ii)几个唯一标识的div来保存现有的显示注释和ajax刷新或html dom操作只有当执行动作时div在它上面(iii)一个div来保持一个视图更多注释按钮,只有当有更多注释要查看时才会显示该按钮。
因此,每当发布新评论时,“视图更多评论面板带按钮”将刷新,说明[X +(#最近他人的新评论)+(#您的新评论)]评论。点击该按钮后,它将显示另外3条新评论以及“查看更多评论”按钮。