我今天做了几个与我们可以使用 d3 加载 json 文件的方式有关的测试,因为我对这个问题很感兴趣:d3.json works but $.getJson failed。然而,我做的一些测试有点棘手。
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 类型。