我有一個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文件有一些問題。
奇怪的服務器代碼。您獲得了$ data輸出註釋,$ row ['id']僅存在於while循環中。你試圖在json_encode之外使用它。 –