extjs extjs4.1 extjs4.2

Extjs4.2.1-Carga json en treepanel falla



extjs4.1 (3)

Creo un treepanel y yo y creo una store como

var store = Ext.create(''Ext.data.TreeStore'', { autoload: false, proxy: { type: ''ajax'', url: ''data.php'', reader: { type: ''json'', root: ''results'' } } });

mi servidor de impresión json parece

{ "results": [ { id : ''1'' , text : ''1'', expanded: true, children :[ { id : ''5'' , text : ''5'', leaf:true}, { id : ''6'' , text : ''6'', leaf:true} ] }, { id : ''2'' , text : ''2'', leaf:true}, { id : ''3'' , text : ''3'', leaf:true}, { id : ''4'' , text : ''4'', leaf:true}, { id : ''7'' , text : ''7'', leaf:true}, { id : ''8'' , text : ''8'', leaf:true}, { id : ''9'' , text : ''9'', leaf:true}, { id : ''10'' , text : ''10'', expanded: true, children :[ { id : ''11'' , text : ''11'', leaf:true}, { id : ''12'' , text : ''12'', leaf:true} ] } ] }

Pero cuando ejecuto mi código, veo firebug y siempre ejecuto GET http://localhost/example/data.php... nunca detenga :(

y mi árbol se agrega tanto doble

Cómo arreglar ese agradecimiento

Editar
En real, defino mi treepanel con alias y lo uso como xtype
Pero creo un nuevo ejemplo y tengo el mismo problema. Aquí está mi js

var store = Ext.create(''Ext.data.TreeStore'', { autoload: false, proxy: { type: ''ajax'', url: ''data.php'', reader: { type: ''json'', root: ''results'' } } }); Ext.create(''Ext.tree.Panel'', { title: ''Simple Tree'', width: 200, height: 150, store: store, rootVisible: false, renderTo: Ext.getBody() });

Y aquí está mi data.php

echo " { ''success'': true, ''variable'': 100, ''results'': [ { id : ''1'' , text : ''1'', expanded: true, children :[ { id : ''5'' , text : ''5'', leaf:true}, { id : ''6'' , text : ''6'', leaf:true} ] }, { id : ''2'' , text : ''2'', leaf:true}, { id : ''3'' , text : ''3'', leaf:true}, { id : ''4'' , text : ''4'', leaf:true}, { id : ''7'' , text : ''7'', leaf:true}, { id : ''8'' , text : ''8'', leaf:true}, { id : ''9'' , text : ''9'', leaf:true}, { id : ''10'' , text : ''10'', expanded: true, children :[ { id : ''11'' , text : ''11'', leaf:true}, { id : ''12'' , text : ''12'', leaf:true} ] } ] }";


¿Puedes simplemente agregar datos de raíz para almacenar como seguir

var store = Ext.create(''Ext.data.TreeStore'', { autoLoad : false, root: { text: ''Corporate Media'', id: ''0'', expanded: true } proxy: { type: ''ajax'', url: ''data.php'', reader: { type: ''json'', root: ''results'' } } });


revisa tu ortografía de configuración de autoLoad.

var store = Ext.create(''Ext.data.TreeStore'', { // autoload: false, autoLoad : false, proxy: { type: ''ajax'', url: ''data.php'', reader: { type: ''json'', root: ''results'' } } });


Lo que tienes aquí es algo que considero un error en la arboleda. Cuando cambie el lector para usar una raíz que no sea children , también deberá cambiar cada instancia del nombre de la propiedad secundaria en los datos al nuevo nombre también. Eso significa que si quieres cambiar la raíz a los results , los datos de tu árbol en realidad deberían verse más o menos así:

echo " { ''success'': true, ''variable'': 100, ''results'': [ { ''id'' : ''1'' , ''text'' : ''1'', ''expanded'': true, ''results'':[ { ''id'' : ''5'' , ''text'' : ''5'', ''leaf'':true}, { ''id'' : ''6'' , ''text'' : ''6'', ''leaf'':true} ] }, { ''id'' : ''2'' , ''text'' : ''2'', ''leaf'':true}, { ''id'' : ''3'' , ''text'' : ''3'', ''leaf'':true}, { ''id'' : ''4'' , ''text'' : ''4'', ''leaf'':true}, { ''id'' : ''7'' , ''text'' : ''7'', ''leaf'':true}, { ''id'' : ''8'' , ''text'' : ''8'', ''leaf'':true}, { ''id'' : ''9'' , ''text'' : ''9'', ''leaf'':true}, { ''id'' : ''10'' , ''text'' : ''10'', ''expanded'': true, ''results'':[ { ''id'' : ''11'' , ''text'' : ''11'', ''leaf'':true}, { ''id'' : ''12'' , ''text'' : ''12'', ''leaf'':true} ] } ] }";

La otra opción es cambiar el nombre de la propiedad de los results nivel superior a los children y marcar la raíz de su tienda como children .