将活动元素状态绑定到 jquery AJAX 请求

Binding live element status to jquery AJAX request

你好我想绑定一个元素(或变量):

$("#progressbar").val(55);

至AJAX请求结果:

$.get("/checkstatus/",...);
// this return the status (a number between 1 and 100 %).

而且必须连续调用,才能实时改变进度条的值。

我试过:

$("#progressbar").on() 
... 
$("#progressbar").live()
...

但是,"check continuously" 某物并绑定到元素的事件是什么?。 'click'、'keyup'、...等事件不是时间事件。

我也试过:

setTimeout(...) 

X 秒触发一个请求,但我不知道这是否是最好的方法。

如何使用 AJAX 连续检查并绑定到元素或变量?

问候:

您可以使用 setInterval Javascript 函数以给定的毫秒速率定期执行回调。这种技术称为 轮询

然而,尽管它很简单,但效果不是很好,尤其是当你的负载很重时。如果性能很重要,还有其他更有效的技术。如果您有兴趣,请搜索 long pollingweb socketsSignalR(如果您有.NET 后端)。

var handle = setInterval(function() {
  $.get("/checkstatus/",...)
   .done(function(result) { 
      $("#progressbar").val(result.value); 
      if (result.value >= 100) {
        clearInterval(handle); // stop the cycle
      }      
    });
}, 500); // execute in every 500ms

请注意,上面的代码未经测试,不包含任何异常处理和验证,仅作为一个快速示例。不要"copy-paste"它。