jQuery 1.9 - 首次$ ajax请求后,Internet Explorer 9冻结

mjn*_*mjn 5 javascript ajax jquery internet-explorer-9

对于动态页面,我使用Ajax Long Polling,甚至使用jQuery 1.9,Internet Explorer在第一次请求后挂起.

脚本代码基于使用JavaScript和jQuery的文章Simple Long Polling Example

 <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>
Run Code Online (Sandbox Code Playgroud)

控制台显示没有错误.

IE网络监视器立即向ajaxstats.json资源显示许多请求,响应时间<1 ms,304 (not modified)响应代码.响应正文是正确的(JSON代码).

服务器代码总是将答案延迟1000毫秒.在Firefox中,Firebug XHR日志显示每个请求大约需要1000毫秒.

Firefox和Internet Explorer之间的HTTP响应代码不同:

  • 在Firefox中:响应代码是 200 ok
  • 在Internet Explorer 9中,响应代码是 304 (not modified)

有没有办法解决这个IE问题?

Cor*_*liu 7

尝试将cache param设置为false,如果设置为false,它将强制浏览器不缓存请求的页面.

 <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, cache: false });
     })();
   });
 </script>
Run Code Online (Sandbox Code Playgroud)