Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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_Ajax - Fatal编程技术网

Javascript 将数据推送到客户端

Javascript 将数据推送到客户端,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我喜欢在jQuery中使用PHP和JavaScript 我正在使用PHP显示SQL数据库中的项目列表。我有一个按钮,可以在一个新选项卡中打开一个新页面,该选项卡将向数据库添加一个附加项 如何将数据库中新添加的项添加到第一页上当前显示的列表中,而不刷新该页 我可以强制页面每隔几秒钟发出一个ajax请求,但我认为这不是一个很好的做法 我一直在研究套接字-但是我不知道如何将这些知识应用到我目前的情况中。如果您希望服务器将信息推送回客户端,可能就是您想要的 最新的浏览器支持,这使服务器能够与客户端通信,

我喜欢在jQuery中使用PHP和JavaScript

我正在使用PHP显示SQL数据库中的项目列表。我有一个按钮,可以在一个新选项卡中打开一个新页面,该选项卡将向数据库添加一个附加项

如何将数据库中新添加的项添加到第一页上当前显示的列表中,而不刷新该页

我可以强制页面每隔几秒钟发出一个ajax请求,但我认为这不是一个很好的做法


我一直在研究套接字-但是我不知道如何将这些知识应用到我目前的情况中。

如果您希望服务器将信息推送回客户端,可能就是您想要的

最新的浏览器支持,这使服务器能够与客户端通信,而无需客户端进行常规AJAX请求。较旧的浏览器不支持WebSocket,因此如果您需要支持WebSocket,您可能会对支持更基本技术的框架感兴趣,例如在这些浏览器上进行长轮询

请注意,有一些库使得在web应用程序中集成WebSocket或Comet变得非常容易(有些库不这样做),因此不要重新发明轮子,而要使用您现在使用的PHP框架中提供的工具。例如,如果是Laravel,一个简单的Google搜索会让我想到“一个Laravel包,它允许您使用WebSockets启动并运行实时事件驱动的PHP应用程序。”


在所有情况下,您都不需要使用套接字(除非您的问题中所指的套接字是指WebSocket)。

有3种解决方案

第一(最简单) 从使用pull技术开始,所以每隔一秒检查数据库级别的新项目

第二 您可以将“addtodatabase”表单作为一种模式来实现,一旦用户提交表单,您就可以发送一个ajax请求来更新您的列表(只要是同一个用户执行请求)

第三
调查使用套接字时,它需要一个开放的套接字,并且增加了相当多的复杂性,您将需要查看socket.io项目或类似的

您有一系列实际推送的选项,并且根据您需要支持的浏览器(和浏览器版本),您可能需要不止一种方法

您可以做的最简单的事情是长轮询友好的
comet
(对
ajax
的双关语),在这里,您的客户机打开到服务器的连接并保持打开状态。只要服务器有数据给您,它就会响应。但是,这意味着您需要一些机制来处理服务器上相对大量的打开连接,可能还需要一些异步事件处理

WebSocket肯定是一种选择,但WebSocket的实现相当复杂,有一系列相互竞争的标准和支持。但是,它们非常强大,为您提供了发送和接收数据的方法

如果您只需要将数据推送到客户端,并且对正常的HTTP POST或AJAX用户操作没有问题,那么您可以而且可能应该查看
SSE
或服务器发送的事件:


不要使用新选项卡,在用户创建产品后将其发送到产品页面。项目列表将由多人查看。所以我想让它在没有任何人打开页面重新加载页面的情况下添加项目。另外,谢谢你们给出的所有答案,你们每个人都帮助了我。完成后,我将在这里发布解决方案的简单版本。websockets的标准有哪些?我只看过w3,还有什么?