$.getJSON返回IE8中缓存的数据?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (27)

我现在正在玩ASP.net MVC和JQuery。我遇到过似乎没有道理的行为。

我调用JQuery的$.getJSON函数来填充一些div。事件触发$(document).ready事件。这工作完美。

有一个小的AJAX.BeginForm增加了填充div时使用的另一个值。它正确调用远程函数,并在成功调用原始JavaScript函数重新填充div。

这是怪异的部分:在FireFox和Chrome - 一切正常。但在IE8(测试版)中,第二次调用填充的Div脚本(调用$ .getJSON函数)获取缓存数据,并且不询问服务器!

希望这个问题有道理: - 为什么$.getJSON获得缓存的数据?为什么它只影响IE8?

提问于
用户回答回答于

为了让你知道,Firefox和Chrome认为所有Ajax请求都是不可更改的。IE(所有版本)对待Ajax调用就像对待其他Web请求一样。所以你才会看到这种行为。

如何强制IE在每次请求时下载数据:

  • 正如您所说,在JQuery中使用‘cache’或‘nocache’选项
  • 向请求中添加一个随机参数
  • 在服务器端,设置可达性(例如使用属性,请参见下面)

代码:

public class NoCacheAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext context)
    {
        context.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
    }
}
用户回答回答于

对我来说是这样的..。

$.ajaxSetup({ cache: false });
$.getJSON("/MyQueryUrl",function(data,item) {
     // do stuff with callback data
     $.ajaxSetup({ cache: true });
   });

扫码关注云+社区