我有一个PHP文件,它提供JSON输出,并希望在D3中使用该JSON

时间:2015-10-21 05:59:46

标签: javascript php json d3.js

我有一个php文件名 test.php ,它给了我一个JSON输出,这是一个有效的输出,因为我在http://jsonlint.com/验证过。我想直接在我的身上使用那个JSON使用D3的.html代码。

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;
?>

我正在尝试使用从D3中的test.php创建的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文件存在一些问题。

1 个答案:

答案 0 :(得分:1)

取消注释 echo $ data 。它应该工作正常。