38 votes

La requête AJAX de jQuery a échoué dans IE

L'appel AJAX suivant é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 retourne

 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

51voto

Sam Points 2005

Fixe, j'ai changé le type de contenu de application/json; charset=utf8 à tout simplement application/json .
Je déteste IE :)

Pour éviter également la super-mise en cache d'IE, 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 à obtenir: D

49voto

tanathos Points 4145

Pour le problème de la mise en cache, pourquoi n'utilisez-vous pas simplement le paramètre cache: false ?

 $.ajax({ 
    url: "yoururl",
    cache: false,
    ....
 

8voto

Javier Points 33134

est-ce un copier / coller? la seule chose qui me procure 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 étouffe cela parce que la virgule après le dernier élément. changez le en:

 o = { a:1, b:2, c:3 };
 

et il fonctionne.

7voto

Jav_Rock Points 12621

Dans les nouvelles versions d'Internet Explorer (IE7), il est nécessaire d'écrire la ligne suivante avant d'appeler $ .ajax , sinon la fonction ne serait jamais appelée:

 $.ajaxSetup({ cache: false }); //this line before $.ajax!!!
$.ajax({
    //codes
    //codes
    //codes
});
 

4voto

Craig Stuntz Points 95965

IE met en cache les requêtes AJAX de manière très agressive (plus que Firefox, en tout cas). Vous devez définir correctement les en-têtes Cache-Control dans la réponse si cela ne convient pas à votre site.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X