PHP生成的json变量未在D3.js中显示

时间:2012-12-04 18:47:25

标签: php html json d3.js

我已尝试过此代码的一些变体,但我在控制台中没有出现任何错误消息而停滞不前。现在,它应该非常简单,主要来自Mike Dewar的D3.js入门。我做了一些改变,我认为它正在炸毁(对不起,迈克,我确定这是我的坏事)。

首先,我有一个php文件,当我打开它时可以工作: {"名称":1,"状态":2" URL":3,"时间&#34:4,"天& #34;:5}

回复它的代码称为' jsonphp.php':

<?php
    $arr = array('name' => 1, 'status' => 2, 'url' => 3, 'time' => 4, 'day' => 5);
    echo json_encode($arr);
?> 

然后我只想引用它并(作为测试)在表中显示它。这是一个名为&#39; d3test.htm&#39;

的文件
<!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标题,试图获得&#39; draw&#39;沿着一个变量运行(是的,我有点知道它不会起作用)我认为也许D3.js并不喜欢这个文件以“php&#39;”结尾的事实。没有收到错误,我觉得它认为它有效,所以也许不是。这应该是如此简单,我知道如果我能做到这一点,我可以执行更复杂的输出,但它只是千里之旅的第一步。 BTW尝试在IE 9和Safari 5.1.7中运行它,结果相同。提前谢谢!

ADDENDUM DEC 5 :我尝试在html文档中提醒jsonphp.php文件的长度,并且未定义&#39;。但是,我尝试使用另一个带有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文件的问题,即使看起来确定。

1 个答案:

答案 0 :(得分:1)

尝试在PHP中设置Content-Type标头:

header("Content-Type: application/json");
在致电json_encode

之前