这整个项目和代码稍后将托管到 php、mysql 托管服务器。
代码:
$(document).ready(function(){
console.log('hello');
$('input[name="nm_submit_comment"]').on('click', function(e){
e.preventDefault();
var frm = $(this).closest("form");
var frm_id = frm.attr("id");
var frm_id_splitted = frm_id.split("_");
var frm_id_splitted_2 = frm_id_splitted[2];
var frm_serialized = frm.serialize();
$.ajax({
url: "save-comment.php",
method: "POST",
data: frm_serialized,
success: function(data) {
data = JSON.parse(data);
$('div#id_div_comment_' + frm_id_splitted_2).append('<div class="cl_div_comment_content">' + data.nm_textarea_comment_content + '</div>');
$('textarea.cl_textarea_comment_content').val("");
}
});
});
});
jQuery ajax 工作正常。它将数据保存到数据库,然后将数据附加到 div。我的问题是:附加数据后,数据是否对另一端(计算机/用户)可用/可见?或者在附加数据后,我是否必须添加 set setInterval 函数以每 10 秒加载一次评论 div。因此,如果有人发表评论,则 10 秒后其他用户将可以看到该评论。它 加载所有评论 div 可能会有开销。
我们在 Facebook 状态更新中看到了相同的场景。当有人更新他的状态或评论时,其他所有 friend 都可以看到评论。我们在 stackoverflow 通知中看到了这样的例子。如果有人回答或评论,我们会立即收到通知。它是如何完成的?我怎样才能使数据对其他用户可见?
非常感谢对这种情况的解释。
最佳答案
通过使用 setInterval 函数,所有用户都必须每 10 秒重新加载评论部分,这是一种不好的做法,不是您服务器的最佳设置。然而,这是最简单的解决方案。
最好的解决方案是套接字,套接字会在一个用户发表评论时通知其他用户,反之亦然。抢劫 http://www.socket.io/ .您将必须创建一个应用程序,其中所有用户都可以收听指定的功能,如果一个用户发表评论,其他用户将收到通知。这是解决此问题的一种轻量级方法,因为评论只会在一个用户发表评论(向函数发送信号)时更新。
希望这对您有所帮助。干杯
关于javascript - jQuery ajax,附加数据有效但数据对另一端(计算机/用户)可见吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34553338/