使用vis.js从服务器端获取数据

时间:2016-11-23 12:09:33

标签: javascript jquery ajax servlets vis.js

我有一组存储在数据库中的社区亲属,他们之间有关系。

我试图以一个人为基础,获得这个人的所有死者,并使用vis.js在网络图中表示。

所有请求都是使用ajax生成的,所以我需要一种从servlet获取节点和边缘的方法。我检查了文档,似乎唯一的方法是创建一个json文件,它存储在本地路径然后加载它,但对我来说这是非常古老的,因为该网站将被几十人使用

以下是代码:

var network = null;
var layoutMethod = "directed";

function destroy() {
  if (network !== null) {
    network.destroy();
    network = null;
  }
}

function draw() {
  destroy();

    // randomly create some nodes and edges\n" +
var nodes = <%= request.getParameter("nodes") %>;
var edges = <%= request.getParameter("edges") %>;

  // create a network\n" +

var data = {
    nodes: nodes,
    edges: edges
};
// create a network
var container = document.getElementById('mynetwork');
var options = {

};
var network = new vis.Network(container, data, options);
}

因此,每当您选择一个人时,都会触发操作并且必须更新网络:

 $('#subscribe').click(function()    
 {
     $('#descripcion').find('span').remove().end();
     $('#descripcion').find('br').remove().end();


     $.get( "Almacen", { valor: "C",email:$('#email').val()},function( data){
    $("#descripcion").append(data);

}
              );
    draw();

 });

想办法吗? 感谢

1 个答案:

答案 0 :(得分:0)

您似乎正在将抓取网络数据的主题与更新网络的主题混为一谈。当您通过ajax获取数据时,应将其保存在某些javascript数据结构中,然后根据此数据更新vis.js网络。要更新vis.js网络,可以在'nodes'和'edges'visDataSets上使用'update'方法。 也就是说,

nodes.update([node1,node2,node3]);

edges.update([edge1,edge2,edge3]);

其中节点'i'和edge'i'是描述节点/边的更新(或添加)的对象,它们总是包含'id'字段,因此vis.js可以理解哪个节点/边缘要添加/更新的图表。

实施例: nodes.update([{id:324,title:“My node's new title”},{id:456,hidden:true}]); 该示例修改节点324的标题并隐藏节点456(如果节点尚未存在于网络中,则它实际上将创建它们)。