简单的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时钟工作在一切除了IE的原因

缓存?尝试在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并调用主类

下的每个中间函数