繁体   English   中英

为什么setTimeout在IE上不起作用

[英]Why setTimeout doesn't work on IE

一个非常简单的网页,其中有一个空的div:

<div id="joblist">
</div>

<script type="text/javascript">
    readJobList();
</script>

和javascript:

function handleReadJobList(text) {
    var e = document.getElementById("joblist");
    e.innerHTML = text;
    setTimeout(function(){readJobList();}, 1000);
}

function readJobList() {
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            handleReadJobList(xhttp.responseText);
        }
    }
    xhttp.open("GET", "joblist.ajax", true);
    xhttp.send();
}

当浏览器加载页面时,将首次调用readJobList,它发送一个HTTP请求。 handleReadJobList将读取响应文本,更新div的内容,并在一秒钟后使用setTimeout调用readJobList。 这是一个周期,尽管它是异步的。

此代码可在Firefox,Chrome和Opera上正常运行。 但是在IE11上它不起作用。 我不知道为什么 div的内容仅更新一次。 它将不再更新。

如何解决?

如果AJAX可在除IE之外的所有浏览器上运行,则可能是因为IE正在缓存结果。 您可以使用缓存破坏随机查询参数(如Phil所建议的),或者更好的方法是发送正确的标头以告诉IE(和所有其他浏览器)不要缓存您的AJAX响应。

请参阅此答案以获取涵盖所有主要浏览器的已知工作头集: 如何在所有浏览器中控制网页缓存?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM