Сегодня я провел несколько тестов, связанных с тем, как мы можем загружать json-файлы с d3, потому что меня заинтриговал этот вопрос: 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, который также может быть ошибкой, как видно из методов .ajax() и .getJSON() jQuery), почему я могу видеть данные только в одном случае (первый) - остальные случаи всегда ошибки?
Какие типы MIME поддерживаются методом d3.xhr?
если d3.json был просто приятной упаковкой для d3.xhr, почему пример 1 работает, а пример 2 не работает ...? Я хотел бы получить некоторые разъяснения. В основном я использую d3 с файлами с моего сервера, но есть случаи, подобные этому, когда мне также приходится использовать некоторые внешние данные, и было бы очень полезно сделать это также с D3, а не только с jQuery.
Я думаю, что должен быть список со всеми типами MIME, принятыми этими методами.
моя причина для спрашивать это просто: мы будем использовать D3 в значительной степени для связанных визуализации данных в последующие месяцы – paxRoman