Hice varias pruebas hoy relacionadas con la forma en que podemos cargar archivos json con d3 porque estaba intrigado con esta pregunta: d3.json works but $.getJson fails. Sin embargo, algunas de las pruebas que hice son un poco complicadas.d3.json, d3.xhr y problemas entre dominios
d3.xhr("http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=select+*+where+%7B%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2FRoger_Federer%3E+%3Fp+%3Fo+filter%28lang%28%3Fo%29+%3D+%27en%27%29%7D%0D%0A&debug=on&timeout=&format=application%2Fsparql-results%2Bjson&save=display&fname=", function(data)
console.log("success1");
alert(data);
});
d3.json("http://dbpedia.org/sparql?default-graph-uri=http%3A%2F%2Fdbpedia.org&query=select+*+where+%7B%3Chttp%3A%2F%2Fdbpedia.org%2Fresource%2FRoger_Federer%3E+%3Fp+%3Fo+filter%28lang%28%3Fo%29+%3D+%27en%27%29%7D%0D%0A&debug=on&timeout=&format=application%2Fsparql-results%2Bjson&save=display&fname=", function(data){ console.log("success2");
alert(data);
});
d3.xhr("http://api.worldbank.org/countries/BRA/indicators/BX.KLT.DINV.CD.WD?per_page=10&date=2007:2012&format=json", function(data){
console.log("success3");
alert(data);
})
d3.json("http://api.worldbank.org/countries/BRA/indicators/BX.KLT.DINV.CD.WD?per_page=10&date=2007:2012&format=json", function(data){
console.log("success4");
alert(data);
})
sé que el problema puede estar relacionado con al menos 2 razones: Tipo MIME y CORS, pero no puedo entender varias cosas:
si la devolución de llamada se ejecuta siempre (incluso resistente a veces con el OK 200, que también puede ser un error como se ve en los métodos .ajax() y .getJSON() de jQuery. ¿Por qué puedo ver los datos en un solo caso (el primero)? El resto de los casos son siempre errores?
¿Cuáles son los tipos MIME compatibles con el método d3.xhr?
si d3.json era solo un buen contenedor para d3.xhr ¿por qué funciona el ejemplo 1 y el ejemplo 2 no funciona ...? Me gustaría alguna aclaración. Uso principalmente d3 con archivos de mi servidor, pero hay casos como este cuando también tengo que usar algunos datos externos, y sería muy bueno hacer esto también con D3, no solo con jQuery.
Creo que debería haber una lista con todos los tipos MIME aceptados por estos métodos.
mi razón de hacer esto es simple: vamos a utilizar en gran medida D3 para visualizaciones de datos vinculados en los próximos meses – paxRoman