d3.json, d3.xhr-und cross-domain-Probleme

Ich machte mehrere tests, die heute im Zusammenhang mit der Art, wie wir können, laden von json-Dateien mit d3, weil ich so fasziniert war von dieser Frage: d3.json funktioniert, aber $.getJson ausfällt. Aber einige der tests, die ich gemacht habe, sind ein bisschen tricky.

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);
})

Weiß ich, dass das problem im Zusammenhang mit mindestens 2 Gründe: MIME-Typ und CORS, aber ich kann nicht verstehen, einige andere Dinge:

  1. wenn das callback wird immer ausgeführt (auch manchmal sehr hart mit den OK 200, und das kann auch ein Fehler von jQuery .ajax() und .getJSON () - Methoden) warum kann ich die Daten sehen, die nur in einem Fall (der erste) - den rest der Fälle sind immer Fehler?

  2. was sind die unterstützten MIME-Typen von d3.xhr-Methode?

  3. wenn d3.json war nur ein netter wrapper für d3.xhr warum Beispiel 1 funktioniert, Beispiel 2 funktioniert nicht...? Ich möchte einige Klarstellungen. Ich benutze meistens d3 mit Dateien von meinem server, aber es gibt Fälle wie diese, wenn ich auch verwenden einige externe Daten, und es wäre wirklich schön, dies zu tun, auch mit D3, nicht nur mit jQuery.

Ich denke, es sollte eine Liste mit den MIME-Typen akzeptiert, die von diesen Methoden.

  • mein Grund für diese Frage ist einfach: wir verwenden D3 stark für linked-data-Visualisierungen in den nächsten Monaten
InformationsquelleAutor paxRoman | 2012-05-16
Schreibe einen Kommentar