【发布时间】:2010-11-04 01:25:57
【问题描述】:
我在 Internet Explorer 缓存来自 JQuery Ajax 请求的结果方面遇到了严重问题。
我的网页上有标题,每次用户导航到新页面时都会更新。加载页面后,我会这样做
$.get("/game/getpuzzleinfo", null, function(data, status) {
var content = "<h1>Wikipedia Maze</h1>";
content += "<p class='endtopic'>Looking for <span><a title='Opens the topic you are looking for in a separate tab or window' href='" + data.EndTopicUrl + "' target='_blank'>" + data.EndTopic + "<a/></span></p>";
content += "<p class='step'>Step <span>" + data.StepCount + "</span></p>";
content += "<p class='level'>Level <span>" + data.PuzzleLevel.toString() + "</span></p>";
content += "<p class='startover'><a href='/game/start/" + data.PuzzleId.toString() + "'>Start Over</a></p>";
$("#wikiheader").append(content);
}, "json");
它只是将标题信息注入页面。你可以去www.wikipediamaze.com查看它,然后登录并开始一个新的谜题。
在我测试过的所有浏览器(Google Chrome、Firefox、Safari、Internet Explorer)中,它在 IE 中除了都运行良好。 第一次在 IE 中注入的一切都很好,但之后它甚至从未调用过 /game/getpuzzleinfo。好像它已经缓存了结果什么的。
如果我将呼叫更改为$.post("/game/getpuzzleinfo", ... IE 会很好地接听它。但随后 Firefox 停止工作。
有人可以解释一下为什么 IE 会缓存我的 $.get ajax 调用吗?
更新
根据下面的建议,我已将我的 ajax 请求更改为此,这解决了我的问题:
$.ajax({
type: "GET",
url: "/game/getpuzzleinfo",
dataType: "json",
cache: false,
success: function(data) { ... }
});
【问题讨论】:
-
感谢您提出这个问题。我对这种浏览器行为感到无语。
-
好问题,非常酷的网站。好主意。
标签: asp.net jquery ajax internet-explorer