目前我正在尝试ASP.net、MVC和JQuery。我遇到过一些似乎不合常理的行为。
我调用JQuery的$.getJSON
函数来填充一些div,这个事件是在$(document).ready
事件上触发的。这个可以完美地工作。
有一个很小的AJAX.BeginForm
,它添加了填充div时要使用的另一个值。它正确地调用远程函数,并在成功时调用原始的javascript函数来重新填充div。
奇怪的是:在FireFox和Chrome中,一切都能正常工作。但是在IE8 (测试版)中,对populate脚本(调用$.getJSON函数)的第二次调用将获取缓存的数据,而不会询问服务器!
希望这个问题有意义:简而言之,为什么$.getJSON
会获得缓存数据?为什么它只影响IE8?
发布于 2008-12-11 00:16:42
这就是我的工作原理。
$.ajaxSetup({ cache: false });
$.getJSON("/MyQueryUrl",function(data,item) {
// do stuff with callback data
$.ajaxSetup({ cache: true });
});
发布于 2008-11-05 04:35:40
谢谢Kent的回答。使用缓存(‘{$.ajax: no }');工作正常。编辑
或者至少我以为我知道。似乎jquery $.getJSON没有读取对$.ajax对象所做的任何更改。
最终成功的解决方案是手动添加一个新参数
var noCache = Date();
$.getJSON("/somepage/someaction", { "noCache": noCache }, Callback);
日期分辨率仅精确到分钟;这实际上意味着此解决方案仍可缓存长达一分钟。这对于我的目的来说是可以接受的。
发布于 2009-08-13 03:49:30
我通过在控制器中的Action上放置以下属性解决了同样的问题:
[OutputCache(Duration = 0, VaryByParam = "None")]
https://stackoverflow.com/questions/264216
复制相似问题