2010-06-04 5 views
3

Cette requête ajax vérifie si un fichier TIF existe dans un certain répertoire et définit un bouton pour ouvrir le fichier ou pour afficher un message d'erreur s'il n'y figure pas.L'appel ajax jquery échoue dans IE seulement

 $.ajax(
     { 
      cache: false, 
      url: directory, 
      success: function() { $("#img" + row).click(function() { window.location.href = directory; return false; }) }, 
      error: function(data) { alert(data.responseText); $("#img" + row).click(function() { $("#ImageDialog").dialog("open"); return false; }) } 
     }); 

Parfois, mais pas toujours, IE8 retournera un échec même si le fichier existe et FF et Chrome retour succès. J'ai ajouté le "alert (data.responseText)" en essayant de déboguer le problème, mais je ne reçois jamais la boîte d'alerte. IE échoue à la place en jetant une "erreur système: -1072896748".

Que se passe-t-il?

+0

J'ai cette erreur, mais * faire * obtenir une erreur, ne pas la ligne # dans le débogage. seulement "Objet TypeError non initialisé ou invisible" merci IE ... –

Répondre

0

Bon, je crois que je trouve la cause/solution affichée ici: IE not triggering jQuery Ajax success

Il dit que

IE appears to trigger failure if it can't parse the response as xml, even if the request was a success, so if you're requesting an image, for example, it would return a xhr.status of 200 in the error block. I stuck my "success" functionality in the success block for FF and in the error block wrapped in an "if (xhr.status == 200)" conditional.

+0

est-ce juste moi, ou est-ce que IE a besoin d'une vérification d'erreur trop excessive? –

+0

..bizzare, mais vrai - j'ai trouvé que firebug lite provoquait en fait IE8 pour déclencher "erreur" avec le statut 200, enlevé firebug lite (balise de script dans HEAD) et tout fonctionne !! fous – zack

+0

Les gars, juste eu un bug bizarre. Seul IE échouait sur AJAX, bien que le JSON ait été correctement codé. Le problème était que j'ai oublié un petit trait d'union quand j'ai configuré le Content-Type, c'était "utf8" au lieu de "utf-8". Peut-être que cela peut aider quelqu'un un jour. – thepanuto

0

Cela peut être dû à des problèmes d'encodage (votre contenu se trouve dans un autre charset qu'il ne promet). Voir http://keelypavan.blogspot.com/2006/07/system-error-1072896658-in-ie.html.

+0

Y at-il un moyen de déterminer quel charset est retourné? Si je ne fais que l'alerte (données), j'obtiens [objet]. J'ai essayé de définir contentType sur charset = utf-8, ce qui ne l'a pas empêché de lancer l'erreur système. – wham12

+0

Vous pourriez essayer d'utiliser Firebug dans Firefox. Mais définir le contentType n'est pas utile si ce que vous renvoyez n'est pas * effectivement * UTF-8 ... le problème pourrait être que le navigateur l'interprète comme UTF-8 avec ou sans l'ensemble contentType, mais le charset est en fait incompatible (bien que cela devrait être très exotique ...) – MvanGeest

+0

Le contentType renvoyé devrait être "image/tiff" ... si je le dis, il continue à fonctionner correctement dans Firefox, mais IE échoue pour une raison quelconque. Si je change le contentType en charset = utf-8, IE et Firefox échouent. Cependant, dans Firefox je reçois la boîte d'alerte avec l'image essayant d'être affichée comme texte. Dans IE, je continue à recevoir l'erreur d'erreur du système. – wham12

Questions connexes