L'appel suivant AJAX échoue dans IE.
$.ajax({
url:"{{SITE_URL}}/content/Twitter.json",
dataType:"json",
error:function(xhr, status, errorThrown) {
alert(errorThrown+'\n'+status+'\n'+xhr.statusText);
},
success:function(json) {
...Snip...
}
});
La fonction d'erreur renvoie
Undefined
parsererror
OK
Aucune demande n'est faite au serveur, donc je ne pense pas que ce soit un problème avec le JSON.
Fixe, voir # 1351389
Corrigé, j'ai changé le type de contenu de application/json; charset=utf8
tout simplement application/json
.
Je déteste IE :)
Aussi pour éviter IE super-cache essayez ceci:
var d = new Date();
$.ajax({
url:"{{SITE_URL}}/content/Twitter.json?_="+d.getTime(),
...Snip...
De cette façon, chaque demande est une nouvelle URL pour IE pour obtenir: D
Pour le problème de mise en cache, pourquoi ne pas simplement utiliser le cache: false
paramètre?
$.ajax({
url: "yoururl",
cache: false,
....
est-ce un copier/coller? la seule chose qui m'obtient tout le temps est de laisser le dernier "," dans un constructeur d'objet. c'est-à-dire que la plupart des navigateurs JS acceptent:
o = { a:1, b:2, c:3, };
mais IE s'étouffe parce que la virgule après le dernier élément. changez-la en:
o = { a:1, b:2, c:3 };
et il fonctionne.
Dans les versions plus récentes d'Internet Explorer (IE7), il est nécessaire d'écrire la ligne suivante avant d'appeler $. Ajax, sinon il n'appellerait jamais la fonction:
$.ajaxSetup({ cache: false }); //this line before $.ajax!!!
$.ajax({
//codes
//codes
//codes
});
IE caches AJAX requêtes très agressives (plus que Firefox, de toute façon). Vous devez définir les en-têtes Cache-Control dans la réponse de manière appropriée si cela ne convient pas à votre site.
Un problème majeur avec JSON généré statiquement et IE sont les "virgules", par exemple, cela génère une erreur dans IE:
{
"one":"hello",
"two":"hi",
}
Notez la dernière virgule.
À quoi sert le morceau {{SITE_URL}}. Essayez de regarder le code dans le code source de vue du navigateur. Si le morceau {{SITE _URL}} a une barre oblique de fin et cela ferait l'url de la requête:
http://modomain.com//content/Twitter.json
Ce qui pourrait se glisser IE out?
IE: erreur JSON non définie résolue à
http://funkatron.com/site/comments/safely-parsing-json-in-javascript/
en utilisant dataType: "json" et éviter l'analyse