1

这是我的简单 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);

和控制器/动作:

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回调时,它报告了错误的时间。为什么会这样?

4

3 回答 3

3

缓存也许?尝试cache:false在ajax选项中设置

于 2013-05-30T03:20:19.533 回答
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请求不会被缓存,并确保每次都有新的服务器调用。

于 2013-05-30T03:57:53.683 回答
0

在 package 下编辑并在 CSS 中设置 cache:false 并在主类下调用每个中间函数

于 2013-05-30T04:08:50.987 回答