一尘不染

使用jQuery自动刷新div-setTimeout或其他方法?

javascript

您如何div使用JavaScript(特别是jQuery)进行自动刷新?

我知道这种setTimeout方法,但这真的是一个好习惯吗?有没有更好的方法?

function update() {
    $.get("response.php", function(data) {
        $("#some_div").html(data);
    });
    window.setTimeout("update();", 10000);
}

阅读 576

收藏
2020-05-01

共1个答案

一尘不染

另一个修改:

function update() {
  $.get("response.php", function(data) {
    $("#some_div").html(data);
    window.setTimeout(update, 10000);
  });
}

与此不同的是,ajax调用为1之后,它将等待10秒。因此,刷新之间的时间间隔实际上是10秒+
ajax调用的长度。这样做的好处是,如果您的服务器花费的时间超过10秒,则不会同时发生两个(最终很多)同时的AJAX调用。

另外,如果服务器无法响应,它将不会继续尝试。

过去,我曾使用过类似的方法,使用.ajax处理更复杂的行为:

function update() {
  $("#notice_div").html('Loading..'); 
  $.ajax({
    type: 'GET',
    url: 'response.php',
    timeout: 2000,
    success: function(data) {
      $("#some_div").html(data);
      $("#notice_div").html(''); 
      window.setTimeout(update, 10000);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
      $("#notice_div").html('Timeout contacting server..');
      window.setTimeout(update, 60000);
    }
}

这显示了加载时的加载消息(将动画gif放入其中,以显示典型的“ web
2.0”样式)。如果服务器超时(在这种情况下花费的时间超过2秒)或发生任何其他类型的错误,则表明错误,并等待60秒,然后再次联系服务器。

在与大量用户进行快速更新时,这尤其有用,因为您不希望每个人都突然使请求始终超时的落后服务器瘫痪。

2020-05-01