javascript - 使用ajax自动刷新页面数据

标签 javascript jquery ajax

我有一个页面,其中包含供用户在队列中完成的项目列表。项目被添加到数据库中,我需要更新此列表并定期(可能每分钟)反射(reflect)这些更改。

我不想向页面添加元刷新,因为我想避免重新加载页面。我已经有一个通过 ajax 更新列表的函数,所以我想每分钟调用这个函数。

页面初始加载后,如何重复调用此函数而不执行阻塞 javascript 循环?有没有办法暂停 setInterval 或其他方法来允许队列池的其余部分执行?

我担心这种情况发生:

$('document').ready(function () { 
      setInterval( function() {
           updateList();
      }, 60000);
}

最佳答案

while(true) 循环确实会阻止所有其他脚本的执行。 setInterval不会。

理想的解决方案是像socket.io这样的网络套接字。有了这个,你就可以得到像

这样简单的东西
socket.on("add", function (msg) {
    addItem(msg);
}).on("removeItem", function (msg) {
    removeItem(msg);
})

然后,在您的服务器上,您可以简单地socket.emit("messageType", msg);。这将使您不必不断地使用 AJAX 轮询服务器。

但是,如果不可能,您可以使用以下命令修复代码

$(document).ready(function () {
    var updateInterval = setInterval(updateList, 60000);
    // to clear interval: clearInterval(updateInterval);
})

其中 updateList 是通过 AJAX 轮询服务器并将收到的任何任务附加到页面的函数。

关于javascript - 使用ajax自动刷新页面数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28272892/

相关文章:

javascript - 更新 ngrx/store 中的对象

javascript - 修改 jQuery.ScrollTo 插件以将元素滚动到页面中心(垂直/水平)或尽可能靠近中心

javascript - 如何捕获 html 属性的值并将其写入 html 中的文本?

jquery - ASP.NET MVC : Values sent by jQuery ajax is not being bound to the view model by the action

javascript - 显示 Aurelia 值转换器上的所有筛选器

javascript - 动画结束监听器无法正常工作

JavaScript 按空格分割忽略括号

php - onclick 将 HTML 从一个页面保存到另一个页面

javascript - Coffeescript Ajax——无法让变量在函数之外工作?

Javascript Ajax 可以与 AngularJS 一起使用吗?