我玩弄ASP.net 视和技的时刻。我遇到behavour其中似乎没有意义。

我打电话google i/o大会的 $.getJSON 功能来填充一些div。该事件被触发的 $(document).ready 事件。这个完美的作品。

有一个小的 AJAX.BeginForm 这增加了另一个值时使用的填充div.它呼吁远程功能的正确和成功的通话的原始javascript功能重新填充div.

这里是奇怪的部分:在火狐和铬的一切工作。但在IE8(Β)这一第二次呼吁填充Div脚本(其中呼吁美元.getJSON功能)得到缓存的数据并不要求的服务器!

希望这个问题的有意义:在一个螺壳-为什么 $.getJSON 获得缓存的数据?以及为什么它不仅影响IE8?

有帮助吗?

解决方案

只是让你知道,火狐和铬考虑所有Ajax请求作为非支持高速缓存.IE(所有版本)享Ajax呼仅仅是为其他网页的请求。这就是为什么你看到的这种行为。
如何力即下载数据,在每个请求:

  • 如你所说,使用缓存"或"nocache在JQuery
  • 增加一个随机的参数的要求(丑,但工作:))
  • 在服务器一侧,设置高速缓存能力(例如采用一种属性,参见下文)

代码:

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 });
   });

感谢肯特的回答。 使用$ .ajax('{cache:no}');工作得很好。 [编辑]

或者至少我以为我做到了。似乎jquery $ .getJSON没有读取对$ .ajax对象所做的任何更改。

最终工作的解决方案是手动添加新参数

var noCache = Date();
$.getJSON("/somepage/someaction", { "noCache": noCache }, Callback);

日期解决方案仅为分钟;这实际上意味着这个解决方案仍然可以缓存长达一分钟。这对我来说是可以接受的。

我通过在Controller中的Action上放置以下属性来解决同样的问题:

[OutputCache(Duration = 0, VaryByParam = "None")]

如果您正在使用ASP.net MVC,请考虑添加扩展方法以轻松实现无缓存:

    public static void NoCache(this HttpResponse Response)
    {
        Response.Cache.SetNoStore();
        Response.Cache.SetExpires(DateTime.MinValue);
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.Cache.SetValidUntilExpires(false);

        Response.Expires = -1;
        Response.ExpiresAbsolute = DateTime.MinValue;
        Response.AddHeader("Cache-Control", "no-cache");
        Response.AddHeader("Pragma", "no-cache");
    }

您可能需要发送缓存断路器。

我建议使用$ .ajax({cache:no})以防万一(为get请求添加随机后缀)

(这些天我倾向于使用$ .ajax,更可调)

准备回答了吗?

http://lestopher.tumblr.com/交/ 21742012438 / IF-使用-您选择-IE8和 - 的getJSON

所以,只需添加

jQuery.support.cors = true;  

在脚本的开头,BANG可以工作!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top