Javascript ajax 仅在需要时刷新

Posted

技术标签:

【中文标题】Javascript ajax 仅在需要时刷新【英文标题】:Javascript ajax refresh only when needed 【发布时间】:2018-08-15 20:21:41 【问题描述】:

我有一个 Web 应用程序,它显示从 AJAX 请求接收到的数据到在同一服务器上运行的 php 脚本。在我的例子中,它是一个 Spotify 播放器的播放。因为我希望这些信息尽可能是最新的(如果歌曲发生变化等),我目前的方法是每秒发送一个请求。是否有可能例如将“数据已更改”-触发器从 PHP 服务器发送到 javascript,这样才会触发 AJAX 请求,以减少客户端不需要的流量?还是我缺少另一种方法可以更优雅地解决这个问题?

【问题讨论】:

您当前的 AJAX 设置称为轮询,非常常见。您设想的选项称为websockets,它们的配置和实现方式不同。如果您还没有准备好使用 websockets,那么请考虑在后端提高轮询效率的方法。 您所描述的不需要任何复杂的东西,AJAX 调用是在与服务器应用程序相同的机器上进行的。只是不要太频繁地打电话,它会没事的。我唯一的建议是在成功通话后使用setTimeout(),而不是setInterval()(如果你这样做的话) 你能把你的代码也贴出来 【参考方案1】:

好吧,既然它不是生产产品,仅供个人使用,你可以做的是:

JavaScript UI:像现在一样进行调用。完成后,再次调用(成功、错误、超时)。

服务器端:记住最后一首歌曲是什么,当您获得一首新歌曲(与上一首歌曲相比)时,通过打开的 AJAX 调用将其发回。

基本上它会像一个网络套接字一样一直向服务器打开一个请求。这不是一个好的设计,但是让您的宠物项目运行起来又快又脏,而无需对其进行重组以使用 Web 套接字。

【讨论】:

以上是关于Javascript ajax 仅在需要时刷新的主要内容,如果未能解决你的问题,请参考以下文章

仅在 javascript 循环完成后执行 ajax 调用

页面仅在第一次通过 jquery 在 mvc 中刷新 ajax 调用响应

Rails JavaScript 仅在您刷新页面时加载,而不是在原始页面加载时加载,这是怎么回事?

仅在数据更改时刷新 DataTable

DataTables 仅在页面刷新时加载

jQuery 插件 (DataTables) 仅在页面刷新时正确加载