0

我已经尝试了此代码的一些变体,但我在控制台中没有错误消息而停滞不前。现在,它应该非常简单,主要来自 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 文件有问题,即使它看起来没问题。

4

1 回答 1

1

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

header("Content-Type: application/json");

在你打电话之前json_encode

于 2012-12-04T19:17:12.697 回答