2012-04-25 17 views
8

Estoy usando el siguiente código para tomar datos de JSON.

$(document).ready(function() 
{ 
    $.getJSON("http://www.xyz.com/data.php?id=113&out=json", function(data) { 

     $.each(data.issue.page, function(i,item) { 
      imagesJSON[i] = item["@attributes"]; 
     }); 

     alert(imagesJSON.length); 
    }); 
}); 

Funciona en Mozilla, Chrome y otros navegadores, pero no en IE. (No en cualquier versión).

+4

si pudiéramos ver el resultado de JSON ... – gdoron

+2

¿Qué versión de jquery es este enlace en el dominio en el que se encuentra su secuencia de comandos? –

+3

Errores en la consola JS? ... – binarious

Respuesta

14

$.getJSON tiene una tendencia a cache results in IE. Use $.ajax en su lugar.

La llamada relacionada debe ser algo como esto en su caso:

// Not really sure if you've forgot to var 
var imagesJSON = []; 

$.ajax({ 
    url: "www.example.com/data.php?id=113&out=json", 
    cache: false, 
    dataType: "json", 
    success: function(data) { 
    $.each(data.issue.page, function(i,item) { 
     imagesJSON[i] = item["@attributes"]; 
    }); 

    alert(imagesJSON.length); 
    }, 
    error: function (request, status, error) { alert(status + ", " + error); } 
}); 

Asegúrese de que tiene cache: false.


ACTUALIZACIÓN:

Parece ser un problema de configuración en el host con la URL de la petición que el PO utiliza realmente. Ir a la url directamente con el navegador web IE produce un aborto desde el host. No puede hacer mucho más que informar el problema al host, como un correo electrónico al webmaster del host.

+0

Yo uso esto. ¿Hay algún problema '$ .ajax ({ \t \t url: "http://www.xyz.com/data.php?id=113&out=json", \t \t caché: falso, \t \t tipoDatos:" json", \t \t éxito: function (datos) { \t \t \t $ each (data.issue.page, la función (i, elemento) { imagesJSON [i] = elemento [ "@ atributos"]; \t \t \t alerta (imagesJSON.longitud); }); \t \t error: función (solicitud, estado, error) { alerta (estado + "," + error); \t \t } ' –

+0

@ketan: ¿estás seguro de que lo estás escribiendo correctamente? el valor para el error clave (que es la función que tiene allí) debe estar dentro de la matriz de parámetros para la función '$ .ajax'. – Spoike

+4

Las cosas anteriores me dan error en IE como ** Error, Sin transporte ** –

2

que tenían el mismo error en una página, y añade estas líneas:

<!--[if lte IE 9]> 
<script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.0/jquery.xdomainrequest.min.js'></script> 
<![endif]--> 

y finaly funciona para mí;) no más de error para IE9

Este post me ayuda jQuery Call to WebService returns "No Transport" error