【问题标题】:.net mvc and jquery $.ajax on IE9.net mvc 和 jquery $.ajax 在 IE9 上
【发布时间】:2012-02-29 20:32:13
【问题描述】:

我有一个对控制器的 ajax 调用,它应该向我发送一个更新的视图,以便我可以使用更新的数据更新我的页面。但我得到 304: Not Modified 标题。

我尝试在 ajax 调用中使用 no-cache 选项,并尝试手动将时间戳添加到请求 url 的末尾,但它们都不适用于 IE9。

这在 chrome 上完美运行,无需设置缓存选项。

我不太确定问题出在哪里。

以下是我使用的代码,我认为在手动添加时间戳后可以正常工作。 QA 说它在她的电脑上不起作用。

     $.ajax({
         url: form[0].action + "?cc="+new Date().getTime(),
         type: 'POST',
         cache: false,
         data: $(form).serialize()
     })
    .success(createFilterCleanup);

【问题讨论】:

    标签: jquery .net ajax asp.net-mvc-3 internet-explorer-9


    【解决方案1】:

    尝试在您的 JQuery $.ajax 中设置以下内容,以防止 IE 缓存您的 ajax 请求。 这一直对我有用。

    $.ajaxSetup({ cache: false });
    

    $.ajax({ type: 'POST', cache: false }); 
    

    http://api.jquery.com/jQuery.ajax/

    “如果设置为 false,它将强制浏览器不缓存请求的页面。将缓存设置为 false 还会将查询字符串参数“_=[TIMESTAMP]”附加到 URL。“

    下面是一些其他可能的解决方案的文章:http://www.dashbay.com/2011/05/internet-explorer-caches-ajax/

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      使用 POST 方法代替 GET 或传递随机虚拟参数(如当前时间戳)是防止 IE 中缓存的唯一可靠方法。 :(

      已编辑:仔细阅读后发现附加时间戳对您没有帮助 - 请提供一个小代码示例来说明如何附加它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-17
        • 2011-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-20
        相关资源
        最近更新 更多