这是我简单的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
回调时,它会报错时间。为什么会这样?
答案 0 :(得分:3)
缓存可能吗?
尝试在ajax选项中设置cache:false
答案 1 :(得分:1)
在safari和一些较旧的浏览器中,(从我迄今为止所经历过的,cache:false
似乎有时不起作用)。对于更多跨浏览器兼容的解决方案,您可以向data
调用添加ajax()
选项,并添加随机数生成器作为参数。这将是这样的。
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
请求不会被缓存,并且每次都会确保新的服务器调用
答案 2 :(得分:0)
在package下编辑并在CSS中设置cache:false并在主类
下调用每个中间函数