Javascript 如何将数据传递到d3.json()
目前,代码工作得非常完美。只是我希望每个用户都有一个不同的树形图。因此,我必须在getData.php中传递$user,以便根据此用户和图表创建json数据$在getData.php中的mysql select语句中使用user从数据库中选择数据,然后将所选数据转换为json 请告诉我如何将$user作为回调传递给哪个d3函数。我没有我的资源了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
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 };
});
}));