2011-12-09 19 views
7

Ok, por alguna razón mi getJson no funciona. Estoy extrayendo información de stock y funciona en todos los principales navegadores, excepto en IE.

He creado una jsFiddle aquí: http://jsfiddle.net/qZhSk/

Si alguien puede ayudar a entender lo que estoy haciendo mal va a ser súper útil.

gracias!

EDITAR

he encontrado la solución a mí mismo. El problema estaba en mi consulta URL. Si alguien más tiene este problema aquí es la respuesta:

var url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20WHERE%20symbol%3D'NPO'&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"; 

     $.getJSON(url + "&format=json&callback=?", function(data) { 
     var items = []; 

     $.each(data.query.results.quote, function(key, val) { 

      items.push('<li id="' + key + '">' + val + '</li>'); 
     }); 

     $('<ul/>', { 
      'class': 'my-new-list', 
      html: items.join('') 
     }).appendTo('body'); 
)}; 

Respuesta

8

Técnicamente, creo que está violando la política del mismo origen en este caso. Por definición, no se puede obtener un JSON de un dominio que no sea el suyo ... y obtener datos de Yahoo es ciertamente un servidor diferente al de jsFiddle. Hay un similar issue reported here. Las excepciones CORS que enumeran son IE hasta la versión 10, lo que explicaría el problema perfectamente.

El problema se puede resolver con un "?" en su controlador de devolución de llamada. See this stack article para más información.

+1

eso es exactamente lo que he notado. Básicamente, necesitarás agregar '& callback =?' Al final de tu cadena de url y estarás dorado –

+0

Lo extraño es que funcionó en Firefox. * editar * ah - CORS – Pointy

1

Dado que es una publicación anterior, esta respuesta puede ser útil para otros solicitantes.

Puede haber dos razones por las cuales getJson no funciona en IE.

1.Haga jsonp peticiones que se resolvieron mediante la adición de

&callback=? or &callback=? 

2.Set ajax captura.

$.ajaxSetup({ cache: false }); 

Si todavía tiene un problema, puede deberse al uso de API multiplataforma.

+0

Gracias. En mi caso, el caché era el problema. –