对于来自 jQuery Ajax 请求的 Internet Explorer 缓存结果,我遇到了一个严重的问题。
我有我的网页的标题,得到更新每次用户导航到一个新的网页。一旦加载页面,我就这样做
$.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然后登录并开始一个新的拼图来检查它。
在我测试过的所有浏览器(谷歌 Chrome,火狐,Safari,Internet Explorer)中,它在 IE 中都能很好地工作。在 IE第一次中,所有的东西都被注入得很好,但是在那之后,它甚至从来没有打电话给 /game/getpuzzleinfo
。好像缓存了结果什么的。
如果我把调用改成 $.post("/game/getpuzzleinfo", ...
IE 浏览器就可以正常工作,但是火狐就不工作了。
有人能解释一下为什么 IE 缓存我的 $.get
ajax 调用吗?
更新
根据下面的建议,我已经将 ajax 请求更改为这个,这解决了我的问题:
$.ajax({
type: "GET",
url: "/game/getpuzzleinfo",
dataType: "json",
cache: false,
success: function(data) { ... }
});