首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在IE8中返回缓存数据的$.getJSON

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

Stack Overflow用户
提问于 2008-11-05 02:46:44
回答 6查看 46.5K关注 0票数 102

目前我正在尝试ASP.net、MVC和JQuery。我遇到过一些似乎不合常理的行为。

我调用JQuery的$.getJSON函数来填充一些div,这个事件是在$(document).ready事件上触发的。这个可以完美地工作。

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

奇怪的是:在FireFox和Chrome中,一切都能正常工作。但是在IE8 (测试版)中,对populate脚本(调用$.getJSON函数)的第二次调用将获取缓存的数据,而不会询问服务器!

希望这个问题有意义:简而言之,为什么$.getJSON会获得缓存数据?为什么它只影响IE8?

EN

回答 6

Stack Overflow用户

发布于 2008-12-11 00:16:42

这就是我的工作原理。

代码语言:javascript
复制
$.ajaxSetup({ cache: false });
$.getJSON("/MyQueryUrl",function(data,item) {
     // do stuff with callback data
     $.ajaxSetup({ cache: true });
   });
票数 107
EN

Stack Overflow用户

发布于 2008-11-05 04:35:40

谢谢Kent的回答。使用缓存(‘{$.ajax: no }');工作正常。编辑

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

最终成功的解决方案是手动添加一个新参数

代码语言:javascript
复制
var noCache = Date();
$.getJSON("/somepage/someaction", { "noCache": noCache }, Callback);

日期分辨率仅精确到分钟;这实际上意味着此解决方案仍可缓存长达一分钟。这对于我的目的来说是可以接受的。

票数 16
EN

Stack Overflow用户

发布于 2009-08-13 03:49:30

我通过在控制器中的Action上放置以下属性解决了同样的问题:

代码语言:javascript
复制
[OutputCache(Duration = 0, VaryByParam = "None")]
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/264216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档