*仅*在数据库表更改时刷新 html 页面部分(添加行)

Posted

技术标签:

【中文标题】*仅*在数据库表更改时刷新 html 页面部分(添加行)【英文标题】:Refresh html page sections *only* upon database table change (row addition) 【发布时间】:2018-09-21 18:01:08 【问题描述】:

我有一个网站供用户下注。

每次用户下注时,都会在 mysql 表中插入一个新行。 我想找到一种方法来仅在用户下注时(在插入行时)刷新 html 页面部分(不是整个页面)。

例如,如果用户 A 添加了一个赌注,则在其浏览器中打开页面的每个其他用户(用户 B、用户 C、... 用户 N)都将刷新他们的页面部分。

每秒运行一次 ajax 调用会给服务器增加过多的开销,最终导致服务器挂起(我们已经尝试过)。

Ajax 中是否有我缺少的技术?我们正在使用 php、MySQL、jQuery。

angularJS、nodeJS 等框架呢,有没有更好的实现我想做的事情?

提前感谢您的建设性积极意见。

【问题讨论】:

你要查找WebSockets 【参考方案1】:

是的,您可以使用 nodejs 和 socket.io 来实现您的目标...

当一个新的赌注插入您的数据库时,创建一个套接字连接并触发一个事件给客户端,这是我为您创建的一个示例https://github.com/atikassam/mysql-express-socket-example

【讨论】:

例如,如果用户 A 添加投注,则在其浏览器中打开页面的所有其他用户(用户 B、用户 C、...用户 N)都将刷新其页面部分。它会像这样工作吗? 是的,您必须为每个用户创建一个套接字连接,然后在添加新投注后,向所有套接字发出事件以通知您的投注已更新并且现在在客户端-一边,当触发相同的事件时更新您的数据表...【参考方案2】:
<input type="button" value="Refresh Page" onClick="window.location.reload()">

你可以试试这个。

【讨论】:

OP 希望刷新页面的各个部分,而不是整个页面。

以上是关于*仅*在数据库表更改时刷新 html 页面部分(添加行)的主要内容,如果未能解决你的问题,请参考以下文章

使用AJAX获取Django后端数据

键盘输入时,如何在Ajax调用URL更改后停止MVC页面刷新

用js实现关闭或刷新页面时提示保存更改信息

如何添加拉表视图以刷新 uitableview 内的数据

仅使用 jQuery/Ajax 刷新表的值而不重新加载页面

js刷新当前页面