【发布时间】:2013-01-15 15:49:39
【问题描述】:
对于dynamic page,我使用 Ajax 长轮询,即使使用 jQuery 1.9,Internet Explorer 在第一次请求后挂起。
脚本代码基于文章Simple Long Polling Example with JavaScript and jQuery
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
(function poll(){
$.ajax({ url: "ajaxstats.json", success: function(data){
$("button.requests" ).empty().append(data.requests);
}, dataType: "json", complete: poll, timeout: 30000 });
})();
});
</script>
控制台没有显示错误。
IE 网络监视器立即显示对ajaxstats.json 资源的许多请求,响应时间 和304 (not modified) 响应代码。响应正文正确(JSON 代码)。
服务器代码总是将应答延迟 1000 毫秒。在 Firefox 中,Firebug XHR 日志显示每个请求大约需要 1000 毫秒,正如预期的那样。
Firefox 和 Internet Explorer 的 HTTP 响应代码不同:
- 在 Firefox 中:响应代码为
200 ok - 在 Internet Explorer 9 中,响应代码为
304 (not modified)
有没有办法解决这个 IE 问题?
【问题讨论】:
-
控制台有错误吗? http 流量呢?
-
@jbabey 看到我的编辑,我会用我在 Firefox 中的发现更新它
-
你清除缓存了吗?您正在发出一个 GET 请求,该请求将缓存 http 响应。如果您希望 jQuery 在调用中添加缓存中断查询字符串参数,请将缓存选项设置为 ajax 调用。
-
在旁注中,链接文章中的一个 cmets 已经涵盖了这一点:“你确定 $.ajax 中的超时参数是这样工作的,即将下一次执行延迟至少 30 “
-
@jbabey 我想这是按设计的,我正是出于这个原因延迟了响应 - 避免客户端超载。换句话说:服务器控制下一次刷新页面的时间。
标签: javascript jquery ajax internet-explorer-9