jQuery:帮助更新div内容onchange

时间:2010-10-22 18:02:35

标签: javascript jquery

我有一个div,其内容根据服务器端进程不断变化。目前我使用jQuery load每隔3秒轮询一次服务器以获取任何更新。

这就是我所拥有的:

function poll() {
    reloadPage();
    setTimeout("poll();", 3000); 
}

function reloadPage() { 
      $("#mydiv").load(location.href + " #mydiv>*", "");
}

这在firefox中运行良好,但在IE中,加载不会更新div,可能是由于缓存问题。除了定期轮询之外,还有更好的方法来做我正在尝试做的事情吗?

3 个答案:

答案 0 :(得分:4)

您需要更改每个请求的URL,以防止IE缓存响应。

例如:

function poll() {
    reloadPage();
    setTimeout(poll, 3000); 
}

function reloadPage() { 
    $("#mydiv").load(location.href + "?Timestamp=" + new Date() + " #mydiv>*", "");
}

此外,您不应将字符串传递给setTimeout

答案 1 :(得分:2)

jQuery的ajax有一堆默认设置,其中一个控制缓存。如果将其设置为false,则会在ajax调用中附加时间戳以防止缓存。

http://api.jquery.com/jQuery.ajax/

答案 2 :(得分:0)

  

除了定期轮询之外,还有更好的方法可以做我正在尝试做的事情吗?

由于HTTP是无状态协议,因此没有。您必须轮询以查看服务器上发生了什么。

但是有一种更好的方法来实现轮询:

setInterval(function () {
  $("#mydiv").load(location.href + " #mydiv>*", {Timestamp: new Date()});
}, 3000);

注意:

  • 定义间隔而不是超时,
  • 将实际功能传递给setInterval,而不是字符串
  • 使用data的{​​{1}}参数传递缓存断开器