简单的ajax时钟工作在一切除了IE的原因
本文关键字:IE ajax 时钟 工作 简单 | 更新日期: 2023-09-27 18:16:13
下面是我的简单ajax函数:
var callback = function () {
$.ajax({
url: "/Home/Timer",
success: function (response) {
console.log(response); // Fails, but only in IE10
$("#target").html(response);
}
});
}
setInterval(callback, 1000);
和Controller/Action:
public String Timer()
{
Debug.WriteLine(DateTime.Now.ToString()); // Shows correctly in all browsers
return DateTime.Now.ToString();
}
在Opera, Chrome, Firefox中工作得很好,但由于最奇怪的原因,它不能在IE10中工作。在其他浏览器中,console
会记录当前时间,但在IE10中,它会一遍又一遍地记录同一时间。我在Timer
方法上设置了一个断点,它正确地命中了方法,但不知何故,当它返回success
回调时,它报告了错误的时间。为什么会这样?
缓存?尝试在ajax选项
cache:false
在safari和一些较旧的浏览器中,(从我到现在的经历来看,cache:false
有时似乎不起作用)。对于跨浏览器兼容性更强的解决方案,您可以向ajax()
调用添加data
选项,并添加随机数生成器作为参数。大概是这样的。
var callback = function () {
$.ajax({
url: "/Home/Timer",
//start random number generator
data : { r: Math.random() }
//end random number generator
success: function (response) {
console.log(response); // Fails, but only in IE10
$("#target").html(response);
}
});
}
这样,每次服务器调用发生时,将生成一个新的随机数,并且由于数据与以前的请求不同,ajax
请求不会被缓存,并且将确保每次都有一个新的服务器调用。
在package下编辑并在CSS中设置cache:false并调用主类