如何将数据传递给d3.json()

时间:2017-09-11 11:48:40

标签: javascript json d3.js

目前代码工作正常。我只想为每个用户提供不同的树形图。所以我必须在getData.php中传递$ user,以便根据此用户创建json数据,然后创建图表。 $ user用于getData.php中的mysql select语句,用于从数据库中选择数据,然后将所选数据转换为json。

请告诉我如何将$ user作为回调函数传递给d3函数。我的资源不足!!

var queryString = window.location.search;
var url = "d3js/getData.php" + queryString;
d3.json(url, function(error, treeData) {
    console.log(treeData)
    root = treeData[0];
    update(root);
});

在getData.php的末尾有

header('Content-Type: application/json');
echo json_encode($tree);

所以我猜php文件的输出是json数据

5 个答案:

答案 0 :(得分:1)

d3.json function is used to get the data from a json file which doesn't work for PHP files which returns response other than json format.

You can use d3-request API. On call back - you can render your graph: Example:

var url = "d3js/getData.php" + window.location.search;
d3.request(url)
.get(function(error, treeData) {
   console.log(treeData)
   root = treeData[0];
   update(root);
});

Reference: https://github.com/d3/d3-request/blob/master/README.md#request

的'aria-label'属性

更多详情 - https://github.com/d3/d3/blob/master/API.md

答案 1 :(得分:1)

答案 2 :(得分:0)

首先,您需要将数据导出到json文件,例如data.json

d3.json()期望json文件不是php文件。

 d3.json("data.json", function(error, data) {
      if (error) throw error;
      ...
});

答案 3 :(得分:0)

我使用的代码是:

function upL(l_id) {
d3.json("lsel.php?l_id=" + l_id, function(error, gr) {
     if (error) {
        return console.error(error)
    } else
        console.log(gr);
        draw(gr)
}).header("Content-Type", "application/x-www-form-urlencoded")//this bit might be necessary
}

function draw(gr){create graph...}

(l_id是用户选择的变量)

所以你看起来没问题,尝试添加内容类型(.header(...)),如果treeData被记录到控制台,问题可能就是你访问它的方式。

答案 4 :(得分:0)

您还可以使用该功能来映射您的值:

 d3.layout.stack()(['value'].map((value) => {
  return data.map((d: any) => {
    return { x: obj[d.xAxis], y: d.value };
  });
}));

您还可以在此处查看更多示例 -

https://github.com/amanjain325/angular-d3-charts