Ich benutze node.js, um eine Seite (index.html) zu bedienen, wo ich ein Netzwerkdiagramm mit vis.js visualisiere. Um ein Netzwerkdiagramm mit dieser Bibliothek zu zeichnen, muss man Knoten und Kanten JSON-Arrays (see example) bereitstellen. Knoten - Wie json richtig aus einer lokalen Datei gelesen wird?
// create an array with nodes
var _nodes_ = [
{id: 1, label: 'Node 1'},
{id: 2, label: 'Node 2'},
{id: 3, label: 'Node 3'},
{id: 4, label: 'Node 4'},
{id: 5, label: 'Node 5'}
];
// create an array with edges
var _edges_ = [
{from: 1, to: 2},
{from: 1, to: 3},
{from: 2, to: 4},
{from: 2, to: 5}
];
Die erste Version meiner index.html Datei wie folgt aussieht:
<!doctype html>
<html>
<head>
<title>Network | Basic usage</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/vis.js"></script>
</head>
<body>
<div id="mynetwork"></div>
<script type="text/javascript" >
// create an array with nodes
var _nodes_ = [
{id: 1, label: 'Node 1'},
{id: 2, label: 'Node 2'},
{id: 3, label: 'Node 3'},
{id: 4, label: 'Node 4'},
{id: 5, label: 'Node 5'}
];
// create an array with edges
var _edges_ = [
{from: 1, to: 2},
{from: 1, to: 3},
{from: 2, to: 4},
{from: 2, to: 5}
];
console.log(_nodes_);
console.log(_edges_);
// create a network
var container = document.getElementById('mynetwork');
var data= {
nodes: _nodes_,
edges: _edges_,
};
var options = {
autoResize: true,
clickToUse: false,
width: '800px',
height: '800px'
};
var network = new vis.Network(container, data, options);
</script>
</body>
</html>
Und es ist ganz gut funktioniert. Aber wenn ich versuche, aus einer lokalen Datei des Knoten und Kanten Arrays zu lesen, wird der Netzgraph nicht angezeigt:
<!doctype html>
<html>
<head>
<title>Network | Basic usage</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/vis.js"></script>
</head>
<body>
<div id="mynetwork"></div>
<script type="text/javascript" >
// create an array with nodes
var _nodes_;
var _edges_;
$.getJSON('json/nodes.json', function(nodes) {
_nodes_= nodes;
});
$.getJSON('json/edges.json', function(edges) {
_edges_ = edges;
});
console.log(_nodes_);
console.log(_edges_);
// create a network
var container = document.getElementById('mynetwork');
var data= {
nodes: _nodes_,
edges: _edges_,
};
var options = {
autoResize: true,
clickToUse: false,
width: '800px',
height: '800px'
};
var network = new vis.Network(container, data, options);
</script>
</body>
</html>
Ich verwende:
Knoten .json:
[ { "id": 1, "label": "Node 1" 0.123.}, { "id": 2, "label": "Node 2" }, { "id": 3, "label": "Node 3" }, { „id ": 4, "label": "Node 4" } ]
edges.json:
[ { "from": 1, " to „: 2 }, { "from": 1, "bis" 3 }, { "from": 1, "bis" 4 } ]
Gibt es einen Unterschied zwischen dem Erstellen eines JSON in Ihrem Javascript und dem Lesen aus einer Datei? Kann mir bitte jemand helfen, den Fehler zu finden?
Dank!
'$ .getJSON' ist asynchrone Funktion. Sie führen Ihre Logik- und 'console.log'-Werte aus, noch bevor sie abgerufen wurden. – anvk
@anvk Das war hilfreich, danke! Ich habe es jetzt. – OmarIlias