0

我正在尝试用 d3 绘制 mysql 数据。我正在使用 php 转换为 json 格式,但它还不起作用!出于测试目的,我按照此处指示的步骤 在 XAMPP 上使用 simple-graph.html 和我自己的 php 文件。

include('connect.php');
$result=$con->query("SELECT date, close FROM testable");    
echo json_encode($result->fetchAll(PDO::FETCH_ASSOC)); 

它以 json 格式回显,如下所示:[{"date":"1-May-12","close":"43.32"},{"date":"30-Apr-12","close":"22.54"},{"date":"27-Apr-12","close":"21.54"},{"date":"25-Apr-12","close":"21.42"}]

当我提供 json 文件而不是 php 文件时,图表会显示。

这有效:

d3.json("json.json", function(error, data) {        
data.forEach(function(d) {                              
d.date =parseDate(d.date);                          
d.close = +d.close;                                 
});

这不起作用:

d3.json("tablecreate.php", function(error, data) {      
data.forEach(function(d) {                              
d.date =parseDate(d.date);                          
d.close = +d.close;                                 
});

所有文件都在同一个文件夹中。

有人可以指出我的错误吗?

4

1 回答 1

0

您尚未提供有关如何将 json 输出发送到 d3 脚本的完整 php 源代码。一个问题是,如果您没有发送正确的内容类型标头。以下是 d3 的 API 参考中的一些内容。

使用 mime 类型“application/json”在指定 url 创建对 JSON 文件的请求。如果指定了回调,则立即使用GET方法发出请求,并且在文件加载或请求失败时异步调用回调;使用两个参数调用回调:错误(如果有)和解析的 JSON。如果发生错误,解析的 JSON 是未定义的。如果没有指定回调,则可以使用 xhr.get 或类似的方法发出返回的请求,并使用 xhr.on 进行处理。

确保在回显 json 输出之前已发出以下语句。

header("Content-Type: application/json");
于 2013-07-04T13:07:13.783 回答