Zrobiłem kilka testów dzisiaj związanych ze sposobem, w jaki możemy załadować pliki json z d3, ponieważ zaintrygowało mnie to pytanie: d3.json works but $.getJson fails. Jednak niektóre z testów, które zrobiłem, są trochę trudne.Problemy z d3.json, d3.xhr i między domenami
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);
})
wiem, że problem może być związany z co najmniej 2 powodów: typ MIME i CORS, ale nie mogę zrozumieć kilku innymi:
jeżeli zwrotna jest zawsze wykonywany (nawet trudne z OK 200, które może być również błędem, jak widać z metod jQuery .ajax() i .getJSON(), dlaczego mogę zobaczyć dane tylko w jednym przypadku (pierwszy) - pozostałe są zawsze błędy?
jakie są typy MIME obsługiwane metodą d3.xhr?
Jeśli d3.json był po prostu ładnym opakowaniem dla d3.xhr, dlaczego przykład 1 działa, a przykład 2 nie działa ...? Chciałbym wyjaśnienia. Najczęściej używam d3 z plikami z mojego serwera, ale zdarzają się takie przypadki, kiedy muszę też używać zewnętrznych danych i byłoby miło zrobić to również z D3, nie tylko z jQuery.
Myślę, że powinna istnieć lista wszystkich typów MIME akceptowanych przez te metody.
mój powód do zadawania tego jest prosty: będziemy używać do D3 mocno powiązanych wizualizacji danych w kolejnych miesiącach – paxRoman