我有一个div,其内容根据服务器端进程不断变化。目前我使用jQuery load每隔3秒轮询一次服务器以获取任何更新。
这就是我所拥有的:
function poll() {
reloadPage();
setTimeout("poll();", 3000);
}
function reloadPage() {
$("#mydiv").load(location.href + " #mydiv>*", "");
}
这在firefox中运行良好,但在IE中,加载不会更新div,可能是由于缓存问题。除了定期轮询之外,还有更好的方法来做我正在尝试做的事情吗?
答案 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调用中附加时间戳以防止缓存。
答案 2 :(得分:0)
除了定期轮询之外,还有更好的方法可以做我正在尝试做的事情吗?
由于HTTP是无状态协议,因此没有。您必须轮询以查看服务器上发生了什么。
但是有一种更好的方法来实现轮询:
setInterval(function () {
$("#mydiv").load(location.href + " #mydiv>*", {Timestamp: new Date()});
}, 3000);
注意:
setInterval
,而不是字符串data
的{{1}}参数传递缓存断开器