Json被错误地缓存了

时间:2011-05-24 18:50:22

标签: json caching asp.net-mvc-3 internet-explorer-9 autosuggest

HY!

我的JS正在从控制器请求JSON来编辑现有对象,一个填充的下拉列表。

然后,View从我的autosuggest下拉列表中发送实际值,最近将新值与旧值进行比较,并存储新值。

就像一个人员名单。当我加载页面时,我的ddl中有一些人,我可以添加或删除人员。

这是我的控制者:

    [HttpGet]
    public JsonResult JSON(int order)
    {
        IEnumerable<Person> persons = dataServ.Envolvidos.GetPerson( order )
        return this.Json( new { Result = persons }, JsonRequestBehavior.AllowGet );
    }

我的Json致电:

$.getJSON("/Order/JSON", { order: $("#Id").val() }, function (data) {
   ...
});

一切都很顺利,除了I.E.正在缓存此JSON,当我发送新值并再次返回编辑页面时,旧值不是新值。但是新值存储在数据库中,应该是这样。

我在Chrome和Firefox上进行了测试,在我编辑并再次编辑后,它完成了一个新的json调用,并且新的值在那里,与I.E不同。

我错过了什么吗?我应该对JSON结果做什么不进行缓存?

2 个答案:

答案 0 :(得分:20)

这将禁用jQuery ajax的缓存:

jQuery.ajaxSetup({ cache: false });

答案 1 :(得分:8)

我认为默认情况下IE会缓存JSON请求,这与其他浏览器不同。您必须手动包含相应的标头,以告知响应不被缓存。这不会伤害已经不缓存的现有浏览器,它只会更明确。