2010-10-08 18 views
6

había casi llegado a la conclusión de que las llamadas ajax de jQuery no funcionarían con datos JSON en IE 8, no importa lo que he intentado. Descubrí que podía usar la biblioteca jQuery 1.3.2 y esto solucionaba el problema, pero 1.4 simplemente no jugaba a la pelota con solicitudes JSON ajax. Incluso cuando los datos JSON devueltos eran tan simples que no había duda de que estaban en un formato no válido. Por ejemplo:Bug con la combinación de: jQuery 1.4, AJAX/JSON, Firebug Lite y el IE 8

{"x":"a"} 

Ésta era independientemente de si he usado un servlet de Java para devolver los datos JSON, o un archivo de texto simple, en conserva. Independientemente de dataType o contentType. Independientemente de GET vs POST. Independientemente de si utilicé $ .ajax o $ .getJSON. Y todo funciona en Firefox 3.6.

Entonces me di cuenta de que sacar la referencia a Firebug Lite y funcionó! De repente, el problema desapareció. Funcionó independientemente de retocar el contentType en la respuesta (en el servlet que es), o del tipo de datos que especifico en la solicitud.

el problema reaparece si me enlace a Firebug Lite de nuevo ... incluso si mi código en realidad nunca lo usa.

Alguien ha visto este tipo de comportamiento, y ¿alguien tiene una corrección o solución? Odiaría tener que dejar de usar Firebug Lite. Gracias por cualquier idea. Una vez más, el problema sólo se produce cuando se combinan jQuery 1.4, Firebug Lite, datos JSON, y el IE 8.

Aquí es el Ajax llamada a un servlet, si importa:

$.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

Apologies desde el novato de la falta de saltos de línea en el código de ejemplo. Claramente necesito leer algunas preguntas frecuentes. – dnuttle

+0

¿De dónde se aloja el archivo? Cuando ejecuta Firebug Lite, es probable que vea problemas entre dominios y que la respuesta esté vacía. –

+1

Gaaaah He estado luchando contra los problemas de IE7/jQuery/JSON todo el día y resultó ser Firebug Lite el que causaba el problema. +1 por llamar mi atención. Ahora me voy a golpear algo muy, muy duro ... –

Respuesta

1

De hecho, he visto el mismo problema con las respuestas HTML simples, también.

0

no puedo en este momento sale el servicio web para emitir la correcta contentType, pero he podido utilizar .ajax $() en la última versión de jQuery modificando el código JavaScript de la siguiente manera ...

$.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 diferencia es que el servicio no esperar TEXTO JSON, y luego analizar el JSON ....

d = $.parseJSON(d); 

Bodge, pero fijo.

Cuestiones relacionadas