2015-10-21 42 views
1

我有一個PHP文件名test.php的,給了我一個JSON輸出,是因爲我在http://jsonlint.com/已經證實有效的輸出。我想直接在使用D3的.html代碼中使用該JSON。我有一個PHP文件,該文件提供了JSON輸出,並希望使用JSON在D3

test.php的

<?php 
    $user = "root"; 
    $password = ""; 
    $database = "scheduler"; 

    $con = mysqli_connect("localhost", $user, $password, $database) or die ("Unable to connect"); 

    $query = "SELECT semone.userid AS id, semone.semester AS semester, semone.cname AS name, courses.credit AS value, courses.progskill AS skill 
    FROM semone 
    INNER JOIN courses 
    ON semone.cname = courses.coname" ; 

    $result = mysqli_query($con,$query)or die ("Unable to connect"); 

    $lastId = null; 
    while ($row = $result->fetch_array(MYSQLI_ASSOC)) { 
     $row['xyz'] = array(
         'name'=> $row['name'], 
         'value'=> $row['value']  
         ); 

     $info[$row['semester']]['semester'] = $row['semester']; 
     $info[$row['semester']]['children'][]= $row['xyz']; 

     $lastId = $row['id']; 
    } 

    // do not call json_encode on each iteration of the loop 
    $data = json_encode(array('id' => $row['id'], 'children' => array_values($info))); 
    // echo $data; 
?> 

在那裏我試圖使用從test.php的D3中創建的JSON的HTML代碼。

tree.html

var canvas = d3.select("body").append("svg") 
     .attr("width",width) 
     .attr("height",height + padding); 

var data; 

d3.json("test3.php", function (error,json) { 

    if(error) return console.warn(error); 
    data = json; 
    console.log(data); 

    var treemap = d3.layout.treemap() 
     .size([550,550]) 
     .nodes(data); 

    var cells = canvas.selectAll(".cell") 
     .data(treemap) 
     .enter() 
     .append("g") 
     .attr("class","cell") 

它沒有顯示任何東西,如果它不能夠訪問JSON文件。但是,當我通過保存在文件夾中的一些JSON文件使用相同的JSON時,它工作正常。所以這個html和php文件有一些問題。

+0

奇怪的服務器代碼。您獲得了$ data輸出註釋,$ row ['id']僅存在於while循環中。你試圖在json_encode之外使用它。 –

回答

1

取消註釋echo $ data。它應該工作正常。

+0

我很抱歉,這樣的跛腳錯誤。我忘了取消註釋,並且一直在尋找錯誤。 – hawkeye