Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript在客户端之间共享数据?_Javascript_Php_Jquery - Fatal编程技术网

如何使用JavaScript在客户端之间共享数据?

如何使用JavaScript在客户端之间共享数据?,javascript,php,jquery,Javascript,Php,Jquery,我有一个JSON变量,但我想让PHP页面上的每个人都能看到相同的变量内容 这段代码应该更多地解释我的情况。 我正试图使它的网页不会重新加载 var chats = []; var j = jQuery.noConflict(); j(document).ready(function() { setInterval(function(i){ var txt = ""; var x;

我有一个JSON变量,但我想让PHP页面上的每个人都能看到相同的变量内容

这段代码应该更多地解释我的情况。 我正试图使它的网页不会重新加载

    var chats = [];
    var j = jQuery.noConflict();
    j(document).ready(function()
    {
        setInterval(function(i){
            var txt = "";
            var x;
            for (x in chats) {
              txt += chats[x] + " <br />";
            }
            document.getElementById("json").innerHTML = JSON.stringify(chats);
        }, 1000)
    });
    j(document).ready(function() {
        j('#post_button').click(function() {
            $text = $('[name=message]').val();
            $sender = $('#texta').val();
            chatstuff = {
                "sender" : $sender,
                "message" : $text,
            };
            chats.push(chatstuff);
            $('[name=message]').val("");
        });
    });

因此,当它执行document.getElementByIdjson.innerHTML=JSON.stringifychats;,我希望每个人都能在同一页面上看到相同的聊天内容。

JavaScript在用户浏览器中运行。变量中的任何数据仅对该客户端可见

为了在客户端之间同步数据,您需要使用WebSocket之类的工具。每个客户端用户都会将数据发送到服务器,服务器会将所有客户端活动中继到每个客户端

一个非常流行的JavaScript websockets库是。如果您刚刚开始搜索websockets教程,您将发现大量关于如何使用JavaScript创建简单聊天的内容

这是一个就在那里的网站

为什么要使用WebSocket而不是Ajax

好吧,想一想。。。Ajax非常适合客户端异步向服务器发送数据,但是服务器与客户端通信又如何呢

如果用户A写hello,我们可以使用Ajax将其发送到服务器,但是如何通知用户B和C新消息到达

历史上,在WebSocket出现之前,这是通过Ajax长轮询完成的。这意味着每x秒,每个客户机都会向服务器发出一个ajax请求,询问嘿,有什么新消息需要我阅读吗

如果你正在实现一个实时聊天应用程序,这意味着x将是最长5秒的时间,否则用户将对延迟感到非常沮丧

每5秒钟ping一次服务器,一遍又一遍地问同样的问题,这很烦人。以今天的标准来看,它是相当古老的。也许有更好的方法

好的,那么WebSocket是如何让这更好的呢

WebSocket允许客户端和服务器之间的连接保持打开状态。这意味着服务器可以在数据到达后立即向客户机发送数据,而客户机无需请求数据

这意味着我们可以放弃轮询,更快地同步数据!好极了

好的,那太好了,但我不能依赖尖端技术

那也不是什么问题。我建议使用websocket库(例如socket.io)的原因是,如果浏览器不支持实际的websocket,socket.io会做出各种各样的尝试来实现类似套接字的连接

包含在回退方法列表中的正是。。。drumroll,请。。。Ajax长轮询

是否有socket.io的替代方案


是的。现在你知道你在寻找它应该很容易找到吨的选择在那里。是另一个很棒的库,如果socket.io对您来说太过繁重,我一定会去看看。

JavaScript在用户浏览器中运行。变量中的任何数据仅对该客户端可见

为了在客户端之间同步数据,您需要使用WebSocket之类的工具。每个客户端用户都会将数据发送到服务器,服务器会将所有客户端活动中继到每个客户端

一个非常流行的JavaScript websockets库是。如果您刚刚开始搜索websockets教程,您将发现大量关于如何使用JavaScript创建简单聊天的内容

这是一个就在那里的网站

为什么要使用WebSocket而不是Ajax

好吧,想一想。。。Ajax非常适合客户端异步向服务器发送数据,但是服务器与客户端通信又如何呢

如果用户A写hello,我们可以使用Ajax将其发送到服务器,但是如何通知用户B和C新消息到达

历史上,在WebSocket出现之前,这是通过Ajax长轮询完成的。这意味着每x秒,每个客户机都会向服务器发出一个ajax请求,询问嘿,有什么新消息需要我阅读吗

如果你正在实现一个实时聊天应用程序,这意味着x将是最长5秒的时间,否则用户将对延迟感到非常沮丧

每5秒钟ping一次服务器,一遍又一遍地问同样的问题,这很烦人。以今天的标准来看,它是相当古老的。也许有更好的方法

好的,那么WebSocket是如何让这更好的呢

WebSocket允许客户端和服务器之间的连接保持打开状态。这意味着服务器可以在数据到达后立即向客户机发送数据,而客户机无需请求数据

这意味着我们可以放弃轮询,更快地同步数据!好极了

好的,那太好了,但我不能依赖尖端技术

那也不是什么问题。我之所以推荐websocket库,例如socket.io,是因为socket.io将生成各种各样的 在浏览器不支持实际WebSocket的情况下,尝试实现类似套接字的连接

包含在回退方法列表中的正是。。。drumroll,请。。。Ajax长轮询

是否有socket.io的替代方案


是的。现在你知道你在寻找它应该很容易找到吨的选择在那里。是另一个很棒的库,如果socket.io对您来说太笨手笨脚了,我肯定会检查它。

不,您必须使用服务器来完成此操作。将此页面中的新数据发送到服务器,服务器将为其他查看器更新页面。考虑阅读这样的教程

不,你必须为此使用服务器。将此页面中的新数据发送到服务器,服务器将为其他查看器更新页面。考虑阅读一些这样的教程

谢谢你给我这个想法,如果我不能使用Ajax,这将是我的次要。实际上我会尝试这一点,再次感谢这么多,一直在寻找一段路。谢谢你给我的想法,如果我似乎不能使用ajax,这将是我的第二步。实际上,我会尝试一下,再次感谢你,我一直在寻找方法。是的,那就是使用ajax。是的,xmlhttp是朝着正确的方向迈出的一步,但正如@naomik之前指出的那样,您可以通过更复杂的WebSocket实现真正的交互。使用ajax,您只能每X秒提取一次新数据,相反,WebSocket可以一次将数据推送到所有用户。@vitr我相信,如果您阅读naomik的答案,您的想法和答案也会改变。.ajax长轮询在许多方面都不有效。毫无疑问,WebSocket更好,但这并没有改变服务器和许多客户机的概念。套接字只是另一种实现。是的,那就是使用Ajax。是的,xmlhttp是朝着正确方向迈出的一步,但正如@naomik之前指出的那样,您可以使用更复杂的WebSocket实现真正的交互。使用ajax,您只能每X秒提取一次新数据,相反,WebSocket可以一次将数据推送到所有用户。@vitr我相信,如果您阅读naomik的答案,您的想法和答案也会改变。.ajax长轮询在许多方面都不有效。毫无疑问,WebSocket更好,但这并没有改变服务器和许多客户机的概念。套接字只是另一种实现。