Hola!
mirad, tengo un fichero .js que carga un json y está funcionando.En principio se le carga un json completo , y luego al hacer click, expande los hijos del nodo clickado:
-cuando se carga la página:
//load json data
st.loadJSON(json);
//compute node positions and layout
st.compute();
//optional: make a translation of the tree
st.geom.translate(new $jit.Complex(-200, 0), "current");
//emulate a click on the root node.
st.onClick(st.root);
//end
-Cuando se hace un click en el nodo:
onCreateLabel: function(label, node){
label.id = node.id;
label.innerHTML = node.name;
label.onclick = function(){
st.onClick(node.id);
};
(el objeto st es una clase de la librería jit.js)
He introducido una modificación , para que al principio se cargue un json y después otro más grande al hacer click en un nodo: onCreateLabel: function(label, node){ label.id = node.id;
label.innerHTML = node.name; label.onclick = function(){
var http = new XMLHttpRequest();
var url = "inicio_pru.php";
var params = "callFunction=arbol_completo";
http.open("POST", url, true);
//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.send(params);
http.onreadystatechange = function() {//Call a function when the state changes.
if(http.readyState == 4 && http.status == 200) {
json=http.responseText;
st.loadJSON(json);
//compute node positions and layout
st.compute();
//optional: make a translation of the tree
st.geom.translate(new $jit.Complex(-200, 0), "current");
//emulate a click on the root node.
st.onClick(node.id);
}
};
La carga de la página va correcta , pero al clickar en el label de un nodo , me da el siguiente error: jit.js:8795 Uncaught TypeError: Cannot read property 'id' of undefined
El json es asi:
'{"id":"38358","name":"Anillo Critico","data":{"$color":"#008000","$type":"circle"},"children":[]}';
Con lo que deduzco que al hacer st.loadJSON(json), se crea un node con un id, un name y un data, y se crea uno por cada id del json. Cuando hago click en uno, le mando a st.onClick(node.id) el node.id de ese en concreto.
¿me podéis ayudar? Muchisimas gracias de antemano