2011-10-06 15 views
1

我試圖通過json實現http://mbraak.github.com/jqTree/jqtree - JSON數據undefined

這是我在<head>調用的函數:

jQuery(document).ready(function(){ 
    $.getJSON('../controller/das/dus.php', 
         function(data) { 
          $('#tree1').tree({ 
           data:data 
         }); 

        }); 
}); 

我的PHP文件:

<?php session_start(); 
header('Content-type: application/json'); 

require_once '../../model/getdata.php'; 

     $sql = 'SELECT * FROM slode'; 
     $stmt = getaccessdata::getInstance()->prepare($sql); 
     $stmt->execute(); 
     $array = $stmt->fetchAll(PDO::FETCH_ASSOC); 
     $json = json_encode($array); 

     echo $json ; 
?> 

這些是我插入JavaScript文件:

<!-- jquery --> 
<link rel="stylesheet" href="style/jquery/jquery-ui-1.8.14.custom.css" /> 
<script type="text/javascript" src="js/jquery/jquery-1.6.2.min.js"></script> 
<script type="text/javascript" src="js/jquery/jquery-ui-1.8.16.custom.min.js"></script> 

<!-- jqTree --> 
<script type="text/javascript" src="js/jqtree/tree.jquery.js"></script> 
<link rel="stylesheet" href="style/jqtree/jqtree.css" /> 

這是json的數據:

[{"id":"1","stand":"Civ","cat":"cat1","stand":"100","savedate":"2011-03-29 18:53:47","cap":"150"},{"id":"2","stand":"asdasd","cat":"cat2","stand":"120","savedate":"2011-03-29 18:53:47","cap":"150"},{"id":"3","stand":"asdasd","cat":"cat3","stand":"80","savedate":"2011-03-29 18:53:47","cap":"250"},{"id":"4","stand":"asdasd","cat":"cat4","stand":"300","savedate":"2011-03-29 18:53:47","cap":"350"},{"id":"5","stand":"asdasd","cat":"cat5","stand":"450","savedate":"2011-03-29 18:53:47","cap":"450"},{"id":"6","stand":"asdasd","cat":"cat6","stand":"40","savedate":"2011-03-29 18:53:47","cap":"550"}] 

我真的不知道我在做什麼錯。它總是在數據應該顯示的地方顯示「未定義」。

我不知道如何實現樹結構以及它如何在jq樹中顯示。 (在jqtree JSON解析?)

期望的結果: 如果「站」是在不同的JSON數據同樣也應該做一個新的標籤和貓應作爲孩子:

-Civ (=label) 
--cat1 (=children) 


-asdasd (=label) 
--cat2 (=children) 
--cat3 (=children) 
--cat4 (=children) 
--cat5 (=children) 
--cat6 (=children) 

我怎麼能我的JSON數據轉換成這種結構:

var data = [ 
    { 
     label: 'node1', 
     children: [ 
      { label: 'child1' }, 
      { label: 'child2' } 
     ] 
    }, 
    { 
     label: 'node2', 
     children: [ 
      { label: 'child3' } 
     ] 
    } 
]; 

回答

0

的原因是,你想以適當的格式返回JSON這樣

{ 
    "0": { 
     "id": "1", 
     "stand": "100", 
     "cat": "cat1", 
     "savedate": "2011-03-29 18:53:47", 
     "cap": "150" 
    }, 
    "1": { 
     "id": "2", 
     "stand": "120", 
     "cat": "cat2", 
     "savedate": "2011-03-29 18:53:47", 
     "cap": "150" 
    }, 
    "2": { 
     "id": "3", 
     "stand": "80", 
     "cat": "cat3", 
     "savedate": "2011-03-29 18:53:47", 
     "cap": "250" 
    }, 
    "3": { 
     "id": "4", 
     "stand": "300", 
     "cat": "cat4", 
     "savedate": "2011-03-29 18:53:47", 
     "cap": "350" 
    }, 
    "4": { 
     "id": "5", 
     "stand": "450", 
     "cat": "cat5", 
     "savedate": "2011-03-29 18:53:47", 
     "cap": "450" 
    }, 
    "5": { 
     "id": "6", 
     "stand": "40", 
     "cat": "cat6", 
     "savedate": "2011-03-29 18:53:47", 
     "cap": "550" 
    } 
} 

平均給予重點:值對您的JSON

你可以驗證此http://jsonlint.com/

+0

不,我的json似乎是有效的。它可以工作,如果我嘗試:$ .getJSON(「../ controller/das/dus.php」,function(data){。 「+ key + val.silo); }); }); –

+0

這意味着你得到了你的問題的答案。 –

+0

no :-(我不知道爲什麼數據不會顯示在jqtree中,它總是說未定義...或許在getjson函數中寫入數據:數據是錯誤的,但這是在開發者頁面上描述的方式。用這個嚇壞了......現在我已經花了大約10個小時...... –

1

您的JSON文件JSON格式應該是:

var data = [ 
    { 
     label: 'node1', 
     children: [ 
      { label: 'child1' }, 
      { label: 'child2' } 
     ] 
    }, 
    { 
     label: 'node2', 
     children: [ 
      { label: 'child3' } 
     ] 
    } 
]; 

也就是說你的陣列應該有標籤和兒童在裏面,你可以把其他的東西,但這些都必須

+0

用戶詢問了它,該怎麼做! – byCoder

+0

儘管日期顯示,但他編輯它。它並沒有在開始時顯示出來,正如你可以通過其他答案看到的那樣。 –