Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将数据传递到d3.json()_Javascript_Json_D3.js - Fatal编程技术网

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

Javascript 如何将数据传递到d3.json(),javascript,json,d3.js,Javascript,Json,D3.js,目前,代码工作得非常完美。只是我希望每个用户都有一个不同的树形图。因此,我必须在getData.php中传递$user,以便根据此用户和图表创建json数据$在getData.php中的mysql select语句中使用user从数据库中选择数据,然后将所选数据转换为json 请告诉我如何将$user作为回调传递给哪个d3函数。我没有我的资源了 var queryString = window.location.search; var url = "d3js/getData.php" + que

目前,代码工作得非常完美。只是我希望每个用户都有一个不同的树形图。因此,我必须在getData.php中传递$user,以便根据此用户和图表创建json数据$在getData.php中的mysql select语句中使用user从数据库中选择数据,然后将所选数据转换为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数据。首先,您需要将数据导出到一个json文件,如data.json

json()需要一个json文件,而不是php文件

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

d3.json
函数用于从json文件获取数据,该文件不适用于返回json格式以外响应的PHP文件

您可以使用d3请求API。回拨时-您可以渲染图形: 例如:

参考:

有关更多详情,请参阅:

更多信息请查看此处

我使用的代码是:

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被记录到控制台,那么问题可能是您访问它的方式

您还可以使用该函数获取映射值:

 d3.layout.stack()(['value'].map((value) => {
  return data.map((d: any) => {
    return { x: obj[d.xAxis], y: d.value };
  });
}));
您还可以在这里看到更多示例-


getData.php的结构是什么?它是一个树结构。它是这样的吗?是的,它是那样的。treeData是否被记录到控制台?它是正确编码的json吗?您是否尝试过访问url:并查看文件的输出。我仍然认为您需要调用一个json文件。检查这个问题,我的代码运行良好。目前我提供$user=1;包含mysql代码的getData.php中获取数据。但是,由于我的数据是根据用户而定的,所以我必须将用户数据传递给getData.phpI。了解您的查询得到的是json,但它得到的是json文件吗?是的,是这样的。在getData.php的末尾有以下命令:header('Content-Type:application/json');echo json_编码($tree);1.在回调函数中,可以解析json数据。2.根据请求类型,必须调用适当的请求方法(post、get…),如果PHP文件返回JSON编码的数据,那么d3.JSON可以调用PHP文件。这就是语法,如果你有工作url,那么你必须把绝对url放在那个地方
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...}
 d3.layout.stack()(['value'].map((value) => {
  return data.map((d: any) => {
    return { x: obj[d.xAxis], y: d.value };
  });
}));