2013-03-26 113 views
0

我正在使用Javascript setInterval来保持轮询服务器的任何更新并刷新屏幕与来自服务器的响应。我需要支持> IE7和其他主流浏览器。Javascript setInterval无法在IE7和IE8中工作

setInterval函数在IE7和IE8以外的所有浏览器中被触发。

根据我在其他文章中看到的建议,我尝试在ajax请求上设置cache:false,并在匿名函数中包装setInterval调用。但是没有任何建议似乎有效。

以下是我使用的代码:

$(document).ready(function() { 
    setInterval(pollForServerUpdates, 30000); 
}); 


function pollForServerUpdates() { 

$.ajax({ url: $.url("Home/GetUpdates"), 
     type: "POST", 
     cache: false, 
     success: function (result) { 
      updateTabelWithCurrentStatus(result); 
     }, 
     dataType: "json" 
    });  
} 

我不知道如果我在这里缺少什么。很感谢任何形式的帮助。 谢谢!

+0

如果'setInterval'没有触发,那么设置'cache'不会帮助你。 – 2013-03-26 15:16:00

+1

通常建议避免使用'setInterval'并使用自激'setTimeout'。 'setInterval'存在问题,如果它被阻塞,则间隔调用可能会排队,并且可能会有一堆它们一次全部激发。有关更多信息,请参阅http://bonsaiden.github.com/JavaScript-Garden/#other.timeouts。 – Spudley 2013-03-26 15:18:18

+4

您是否检查过控制台中的错误? – Pointy 2013-03-26 15:19:17

回答

1

我把上面的评论作为这个问题的答案。发生这个问题是因为“class”似乎是IE中的一个保留关键字并导致错误。在创建元素时,我将类关键字用引号括起来,一切都很好。谢谢Pointy让我看看控制台。 @Spudley,感谢您的提示,我将用您的建议重构我的代码。

+0

在那里,只是用双引号包装“类”似乎工作。 – phillihp 2014-10-17 19:18:26