J'ai un sérieux problème avec Internet Explorer qui met en cache les résultats d'une requête JQuery Ajax.
J'ai un en-tête sur ma page Web qui est mis à jour chaque fois qu'un utilisateur navigue vers une nouvelle page. Une fois la page chargée, je fais ceci
$.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='http://stackoverflow.com/game/start/" + data.PuzzleId.toString() + "'>Start Over</a></p>";
$("#wikiheader").append(content);
}, "json");
Il ne fait qu'injecter des informations d'en-tête dans la page. Vous pouvez le vérifier en allant sur www.wikipediamaze.com et ensuite se connecter et commencer un nouveau puzzle.
Dans tous les navigateurs que j'ai testés (Google Chrome, Firefox, Safari, Internet Explorer), il fonctionne parfaitement. sauf en IE. Tout est injecté sans problème dans IE. la première fois mais après cela, il ne fait même pas l'appel à /game/getpuzzleinfo
. C'est comme s'il avait mis les résultats en cache ou quelque chose comme ça.
Si je change l'appel à $.post("/game/getpuzzleinfo", ...
IE le récupère très bien. Mais ensuite, Firefox cesse de fonctionner.
Quelqu'un peut-il m'éclairer sur la raison pour laquelle IE met en cache mon $.get
des appels ajax ?
UPDATE
Selon la suggestion ci-dessous, j'ai changé ma requête ajax en ceci, ce qui a réglé mon problème :
$.ajax({
type: "GET",
url: "/game/getpuzzleinfo",
dataType: "json",
cache: false,
success: function(data) { ... }
});
8 votes
Merci de poser cette question. Je suis sans voix face au comportement de ce navigateur.
1 votes
Bonne question, et site web vraiment cool. Bonne idée.