2012-11-23 99 views
0

我的數據顯示在控制檯中,但不顯示在ExtJs樹中?分機樹,數據顯示在控制檯中,但不顯示在頁面上

我的PHP文件

$data = array(); 

    $sql = ""; 

    if (!isset($_POST['node'])) { 
     // first select the top node that have no parent 
     $sql = "SELECT id_no,value_data FROM extjs_tree WHERE parent IS NULL"; 
    } else { 
     // select data with parent_id = $_POST['node'] 
     $sql = "SELECT id_no, value_data FROM extjs_tree WHERE parent = '". $_POST['node'] ."'";            
    } 

    $q = mysql_query($sql); 

    while ($r = mysql_fetch_array($q)) { 
     // check if have a child node       
     $qq = mysql_query("SELECT id_no, value_data FROM extjs_tree WHERE parent = '". $r['id'] ."'"); 

     if (mysql_num_rows($qq) > 0) { 
      // if have a child 
      $r['leaf'] = false; 
      $r['cls'] = 'folder'; 
     } else { 
      // if have no child 
      $r['leaf'] = true; 
      $r['cls'] = 'file'; 
     } 
     $data[] = $r; 

    }    


    echo json_encode($data); 

我的JS文件

Ext.require([ 
    'Ext.tree.*', 
    'Ext.data.*', 
    'Ext.tip.*' 
]); 

Ext.onReady(function() { 
    Ext.QuickTips.init(); 

    var store = Ext.create('Ext.data.TreeStore', { 
     proxy: { 
      type:'ajax', 
      actionMethods:'post', 
      url:'get-nodes.php' 


     }, 
     root: { 
      text: 'Root Node', 
      id: 'root_node', 
      expanded: true 
     }, 
     folderSort: true, 
     sorters: [{ 
      property:'text', 
      direction:'ASC' 
     }] 
    }); 

    var tree = Ext.create('Ext.tree.Panel', { 
     store: store, 
     renderTo: 'tree_el', 
     height: 300, 
     width: 250, 
     title: 'Products Display' 
    }); 
}); 

我得到正確的樹,我可以看到在控制檯中的數據。但我無法看到ExtJs顯示值

我現在的結果

enter image description here

我預期的結果應該是

enter image description here

+0

旁註:有在行'$ SQL =巨大的安全漏洞「SELECT id_no,value_data FROM extjs_tree WHERE parent ='「。 $ _POST ['node']。「'」;'。 http://xkcd.com/327/ –

+0

你必須改變'value:'爲'text:'或者映射你的模型,因爲你使用的是默認的NodeMap。 – VoidMain

回答

2

在你的情況,你也可以以下字段添加到您的商店:

{ 
    name: 'text', 
    mapping: 'value' 
} 
+0

我的商店看起來像這樣,它不工作? '變種商店= Ext.create( 'Ext.data.TreeStore',{ \t \t代理:{ \t \t \t類型: 'AJAX', \t \t \t actionMethods: '後', \t \t \t URL :「GET-nodes.php」, \t \t \t名稱:「文本」, \t \t \t映射:「value'' –

+0

好像你已經添加的名稱和映射場商店的代理,而不是爲九月憤怒的領域。 見http://docs.sencha.com/ext-js/4-0/#!/api/Ext.data.AbstractStore-cfg-fields –

0

響應的每一項都必須有它text領域。正如我從您的請求 - 響應圖像中可以看到的,您不會發送text字段。響應應該看起來像下列之一:

[{ 
    "id": 2, 
    "text": "Fruits", // this field is required 
    ... 
}, 
    ... 
] 
+0

是否需要在商店? –

+0

@StrataGeeksCEO,編號在答覆json。否則,你必須像托馬斯指出的那樣修改你的模型。 –

相關問題