我已经尝试了此代码的一些变体,但我在控制台中没有错误消息而停滞不前。现在,它应该非常简单,主要来自 Mike Dewar 的 D3.js 入门。我做了一些改变,我认为这让它爆炸了(对不起,迈克,我敢肯定这是我的错)。
首先,我有一个打开它时可以使用的 php 文件: {"name":1,"status":2,"url":3,"time":4,"day":5}
与它相呼应的代码称为“jsonphp.php”:
<?php
$arr = array('name' => 1, 'status' => 2, 'url' => 3, 'time' => 4, 'day' => 5);
echo json_encode($arr);
?>
然后我只想引用它并(作为测试)在表格中显示它。这是一个名为“d3test.htm”的文件
<!DOCTYPE html>
<html>
<head>
<meta charset = 'utf-8'>
<script src='d3.v2.min.js'></script>
<script>
function draw(data){
'use strict';
d3.select('body')
.append('ul')
.selectAll('li')
.data(data)
.enter()
.append('li')
.text(function(data){
return data.name + ': '+ data.status;
});
}
</script>
</head>
<body>
<script>
d3.json('jsonphp.php', draw);
</script>
</body>
</html>
我尝试了一些变体,例如重命名 json 标头,尝试沿变量获取“绘制”函数(是的,我有点知道这行不通),我认为 D3.js 可能不喜欢这样的事实文件以“php”结尾?没有返回错误告诉我它认为它正在工作,所以也许不是这样。这应该很简单,我知道如果我能做到这一点,我可以执行更复杂的输出,但这只是一千英里旅程的第一步。顺便说一句,尝试在 IE 9 和 Safari 5.1.7 中运行它,结果相同。提前致谢!
附录 12 月 5 日:我尝试在我的 html 文档中提醒 jsonphp.php 文件的长度并得到“未定义”。但是,我尝试使用另一个带有 js 扩展名的测试文件,但其中没有任何内容,但([{"a":"-1.14","b":"4.14"},{"a":"-0.13","b":"1.38"},{"a":"-4.19","b":"1.43"},{"a":"-0.21","b":"3.34"}])
它提醒了正确的数字 (4)。同样使用测试我得到了可视化工作正常。所以问题是 D3.js 不喜欢 php 文件,或者 php 文件有问题,即使它看起来没问题。