私はd3でjsonファイルをロードする方法に関するいくつかのテストを今日行いました。なぜなら、私はこの質問に興味があったからです:d3.json works but $.getJson fails。しかし、私が作ったテストのいくつかはややこしいものです。d3.json、d3.xhr、およびクロスドメインの問題
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);
})
私は問題は、少なくとも2つの理由に関連させることができることを知っている:MIMEタイプとCORSが、私はいくつか他のことを理解することはできません。
コールバックが常に実行された場合( jQueryの.ajax()メソッドと.getJSON()メソッドから見られるようにエラーでもあるOK 200の場合もあります)なぜ、私は1つのケース(最初のケース)でデータを見ることができますか?残りのケースは常にエラー?
d3.xhrメソッドでサポートされているMIMEタイプは何ですか?
d3.jsonがd3.xhrの素晴らしいラッパーだったとしたら、例1はうまくいっていて、例2は機能しません... ...?私はいくつかの説明をしたいと思います。私は主にサーバーからのファイルでd3を使用しますが、いくつかの外部データを使用する必要がある場合もあります.jQueryだけでなく、D3でもこれを行うのは本当にうれしいでしょう。
これらの方法で受け入れられるすべてのMIMEタイプのリストがあるはずです。
これを尋ねるための私の理由は単純です:私たちはWorldBankのために、私が使用してお勧めしたい – paxRoman