Ich möchte Daten aus einer JSON-Datei auf meinem Computer laden. Ich weiß, dass ich ohne HTTP-Server nicht lesen kann, deshalb möchte ich ein Eingabefeld erstellen. Meine Datei wird erfolgreich gelesen, aber wenn ich die Daten an die Funktion zum Erstellen des Blasendiagramms sende, wird nichts erstellt. Wenn ich von lokalen laden, funktioniert es (ich führe einen HTTP-Server aus). Dies ist der Code:Daten vom lokalen Computer
<script type="text/javascript">
var json;
function handleFileSelect(evt) {
var files = evt.target.files;
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
function handleFileSelect(evt) {
var files = evt.target.files;
var output = [];
for (var i = 0, f; f = files[i]; i++) {
var reader = new FileReader();
reader.onload = (function (theFile) {
return function (e) {
json = JSON.parse(e.target.result);
alert('json global var has been set to parsed json of this file here it is unevaled = \n' + JSON.stringify(json));
initData(JSON.stringify(json)); // Doesn't works
//initData("data.json"); // Works
}
})(f);
reader.readAsText(f);
}
}
document.getElementById('files').addEventListener('change', handleFileSelect, false);
</script>
function initData(data){
d3.json(data, function(error, root) {
if (error) throw error;
var node = svg.selectAll(".node")
.data(bubble.nodes(classes(root))
// .....
Dies ist ein Online-Beispiel für Plunker: https://plnkr.co/edit/T8WFvj0qtMW5mFK6gOjO?p=preview
Dank.