2010-10-08 6 views
6

J'avais à peu près conclu que les appels ajax de jQuery ne fonctionneraient pas avec les données JSON dans IE 8, peu importe ce que j'ai essayé. J'ai trouvé que je pourrais utiliser la bibliothèque jQuery 1.3.2 et cela a résolu le problème, mais 1.4 ne jouerait tout simplement pas à la bille avec les requêtes JAX ajax. Même lorsque les données JSON renvoyées étaient si simples qu'il n'était pas question qu'elles soient dans un format invalide. Par exemple:Bug avec la combinaison de: jQuery 1.4, ajax/json, Firebug Lite et IE 8

{"x":"a"} 

Ce fut indépendamment du fait que j'ai utilisé un servlet Java pour renvoyer les données JSON, ou un simple fichier texte en conserve. Indépendamment de dataType ou contentType. Indépendamment de GET vs POST. Peu importe si j'ai utilisé $ .ajax ou $ .getJSON. Et tout cela fonctionne dans Firefox 3.6.

Puis il m'est apparu de supprimer la référence à Firebug Lite et IT WORKED! Soudain, le problème a disparu. Cela a fonctionné indépendamment du bidouillage avec le contentType dans la réponse (dans le servlet qui est), ou du dataType que je spécifie dans la demande.

Le problème persiste si je reloue Firebug Lite ... même si mon code ne l'utilise jamais réellement.

Est-ce que quelqu'un a vu ce genre de comportement, et quelqu'un a-t-il une solution ou une solution? Je détesterais devoir arrêter d'utiliser Firebug Lite. Merci pour tout commentaire. Encore une fois, le problème se produit uniquement lorsque vous combinez jQuery 1.4, Firebug Lite, les données JSON et IE 8.

Voici l'appel ajax à un servlet, si elle importe:

$.ajax({ 
cache: false, 
url:"http://localhost:8080/Performance_Reporting/TestServlet", 
type:"GET", 
contentType: "application/json", 
dataType: "json", 
timeout:30000, 
success: function(d, status, req) 
{ 
    $("#result").text(d.x); 
}, 
error: function(req, status, err) 
{ 
    $("#result").text(req.responseText); 
} 
}) 
+0

Excuses de la recrue pour le manque de sauts de ligne dans l'exemple de code. De toute évidence, j'ai besoin de lire quelques FAQ. – dnuttle

+0

D'où vient le fichier hébergé? Lorsque vous exécutez Firebug Lite, vous rencontrez probablement des problèmes inter-domaines et la réponse est vide. –

+1

Gaaaah J'ai été confronté à des problèmes IE7/jQuery/JSON toute la journée et il s'est avéré être Firebug Lite à l'origine du problème. +1 pour l'avoir porté à mon attention. Maintenant, je vais frapper quelque chose de très, très dur ... –

Répondre

1

J'ai fait vu le même problème avec des réponses HTML simples, aussi.

0

Je ne peux pas pour l'instant obtenir le webservice pour sortir le contentType correct, mais je suis en mesure d'utiliser .ajax $() dans la dernière version de jQuery en modifiant mon code javascript comme suit ...

$.ajax({ 
cache: false, 
url:"http://localhost:8080/Performance_Reporting/TestServlet", 
type:"GET", 
contentType: "application/json", 
dataType: "text", 
timeout:30000, 
success: function(d, status, req) 
{ 
    $("#result").text($.parseJSON(d).x); 
}, 
error: function(req, status, err) 
{ 
    $("#result").text(req.responseText); 
} 
}) 

la différence est de rendre le service attendre texte ne JSON, puis analyser le JSON ....

d = $.parseJSON(d); 

Bodge, mais fixe.

Questions connexes