将数据推送到客户端

时间:2014-08-03 15:27:52

标签: javascript php jquery ajax

我喜欢在jQuery中使用PHP和JavaScript。

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

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

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

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

3 个答案:

答案 0 :(得分:0)

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

最近的浏览器支持WebSockets,它使服务器能够与客户端通信,而无需客户端定期发出AJAX请求。较旧的浏览器不支持WebSockets,因此如果您需要支持它们,您可能会对允许回退到更基本技术的框架感兴趣,例如对这些浏览器进行长时间轮询。

请注意,有些库可以让WebSockets或Comet在您的Web应用程序中集成非常简单(好吧,有些人不会),因此不要重新发明轮子和坚持使用您现在使用的PHP框架中提供的那个。例如,如果是Laravel,一个简单的Google搜索引导我BrainSocket"一个Laravel包,它允许您启动并运行实时事件驱动的PHP使用WebSockets的应用程序。"

在所有情况下,您都不应该使用套接字(除非通过套接字,您的意思是您的问题中的WebSockets)。

答案 1 :(得分:0)

您的问题有3个解决方案,

第一(最简单) 首先使用pull技术,因此请在数据库级别检查新项目的每一秒。

二 您可以将“添加到数据库”表单实现为模式,一旦用户提交表单,您就会发送ajax请求来更新列表(只要它是执行请求的同一用户)

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

答案 2 :(得分:0)

您有很多实际推送选项,根据您需要支持的浏览器(和浏览器版本),您可能需要多种方法。

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

WebSockets绝对是一个选项,但WebSockets实现起来相当复杂,有许多竞争标准和支持。但是,它们功能非常强大,可以为您提供发送和接收数据的方法。

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

https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events