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

标签 javascript jquery

如何使用 JavaScript(特别是 jQuery)制作一个自动刷新的 div

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

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

最佳答案

另一个修改:

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

不同之处在于它在 ajax 调用一次后等待 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 秒,然后再次联系服务器。

这在对大量用户进行快速更新时特别有用,在这种情况下,您不希望每个人都突然用无论如何都超时的请求来削弱滞后的服务器。

关于javascript - 使用 jQuery 自动刷新 div - setTimeout 或其他方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/220767/

相关文章:

javascript - 在 Angular JS 中,$scope 变量值从 $http 分配

php - 未定义 xmlDocumentElement

javascript - 调整大小时淡入/淡出

javascript - .find() Jquery 函数在 IE11 中不支持吗?

javascript - 如何在路由 Ember.js 中创建默认菜单

javascript - 类型错误 : Cannot call a class as a function after deploying to Netlify?

javascript - 如何使用 CSS 溢出模态窗口的一部分

jquery - 触发 mousedown 并在事件中包含 e.which

jquery - 重新绑定(bind)hoverIntent jQuery插件

javascript - 动态创建元素并添加具有不同参数的函数。