为什么setTimeout不适用于IE

时间:2015-11-30 02:53:40

标签: javascript jquery internet-explorer

一个非常简单的网页,里面有一个空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的内容 更新一次。它将不再更新。

如何解决?

1 个答案:

答案 0 :(得分:2)

如果AJAX适用于除IE之外的所有浏览器,那么可能是因为IE正在缓存结果。您可以使用缓存清除随机查询参数(如Phil建议的那样)或更好地发送正确的标题,告诉IE(和所有其他浏览器)不要缓存您的AJAX响应。

有关涵盖所有主流浏览器的已知工作标头集,请参阅此答案:How to control web page caching, across all browsers?