我正在优化我的评论功能,我在两种策略之间进行选择。我的评论列表是一个无序列表。
- 用响应中的 UL 替换 DOM 中的 UL。
- 将响应中的最后一个 LI 插入 DOM 中的 UL。
第一个选项更简单,但我觉得这不是最好或正确的方法。如果我想使用第二个选项,如果同时发布了多个评论,我如何知道响应中的哪些评论比 DOM 中的评论更新?
想法?
我正在优化我的评论功能,我在两种策略之间进行选择。我的评论列表是一个无序列表。
第一个选项更简单,但我觉得这不是最好或正确的方法。如果我想使用第二个选项,如果同时发布了多个评论,我如何知道响应中的哪些评论比 DOM 中的评论更新?
想法?
您可以将时间戳保留为变量供 JS 参考。
当您加载页面时,您的服务器端语言会将要加载的最后一条评论的时间戳分配给 javascript 变量。从那时起,每次您加载更多评论时,发送您请求的最后一个时间戳。您的服务器端语言将检查比该时间戳更新的评论。确保在发送更多请求时更新时间戳。通过将其作为响应的一部分发送或跟踪您何时发送请求。
您应该在评论中附加UL
latest LI
s。为什么?您不必获取所有完整的 UL 列表并替换旧列表。减少必须进行的更改。只需获取最新的LI
并将其附加到最后。LESS WORK MORE EFFICIENT
到目前为止,您的问题是关于如何知道哪一个是最新评论。存储时间戳,因为评论存储在数据库中。在第一次获取评论的同时,尝试分配保存最后一项时间戳的变量,然后在数据库中搜索所有与您存储的时间戳相关的内容后,获取列表并附加它们,然后更新变量,再次使用最新的时间戳。
假设您的无序列表是这样的:
<ul id="commentsList">
<li>Comment 1</li>
</ul>
在javascript中你会写:
$.ajax({
url: "the ajax url",
type: "GET",
data: {//whatever data},
success: function(r){
//Assuming r contains the comment.
//(Don't send html as the response but just the comment text
$("#commentsList").append("<li>" + r + "<li>");
}
});