我今天做了幾個測試,涉及到我們可以用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,但我不明白其他的幾件事情:如果總是執行回調
(甚至有時使用OK 200也是一個難題,從jQuery的.ajax()和.getJSON()方法中可以看出這也是一個錯誤)爲什麼我只能看到一個案例中的數據(第一個案例) - 其餘案例都是總是錯誤?
d3.xhr方法支持哪些MIME類型?
如果d3.json只是d3.xhr的一個很好的包裝爲什麼示例1有效並且示例2不起作用...?我想澄清一下。我主要是使用d3與我的服務器上的文件,但也有這樣的情況,當我也必須使用一些外部數據,並且這對D3也是很好的,不僅僅是使用jQuery。
我認爲應該有一個列表,所有這些方法接受的MIME類型。
我之所以問這個很簡單:我們將大量使用D3爲鏈接的數據可視化,在未來幾個月 – paxRoman