Javascript 将nodejs/express应用程序中的json文件加载到d3中
我有一个express应用程序,我想将json数据从文件夹Javascript 将nodejs/express应用程序中的json文件加载到d3中,javascript,node.js,express,d3.js,Javascript,Node.js,Express,D3.js,我有一个express应用程序,我想将json数据从文件夹public加载到d3(版本4) 我的文件夹结构如下所示: public |-myData.json view |-index.jade app.js 我想用d3加载的json数据: { { "name": "Maria", "age": 30 }, { "name": "Fred", "age": 50 }, { "name": "Francis", "age": 12
public
加载到d3(版本4)
我的文件夹结构如下所示:
public
|-myData.json
view
|-index.jade
app.js
我想用d3加载的json数据:
{
{
"name": "Maria",
"age": 30
}, {
"name": "Fred",
"age": 50
}, {
"name": "Francis",
"age": 12
}
}
这是我的index.jade文件:
extends layout
block content
script(src='javascripts/jquery-3.1.1.min.js')
script(src='javascripts/d3.min.js')
script.
$(document).ready(function() {
d3.json("myData.json", function(data) {
console.log("d ", data);
});
});
在app.js中,我说我想提供静态文件:
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.static('public'));
在控制台中,它总是说:d null
更新:
我现在将路径更改为
"d3.json("../myData.json", function(data)"
查看网络选项卡,我可以看到它成功加载了文件。但在控制台中,它仍然会打印“null
”
更新2:
这是因为我的JSON数据无效^^
{
"content": [
{
"name": "Maria",
"age": 30
}, {
"name": "Fred",
"age": 50
}, {
"name": "Francis",
"age": 12
}
]
}
确保指向
d3.json
的第一个参数中的public
文件夹,该文件夹与express静态承载文件的位置有关
...
d3.json("../myData.json", function(data) {
console.log("d ", data);
});
});
更新:已编辑的答案,用于正确的目录引用。还要确保
myData.json
是有效的json文件!:) 您在网络选项卡中看到了什么?“myData.json 404 xhr d3.min.js:6 1.2 KB 40 ms”。无法分别加载它。没有找到。我在Chrome上激活了CORS@斯拉克斯我也试过。但事实并非如此。如果我这样做,它会在控制台中说:“d3.min.js:6 GET 404”啊,也许是这行app.use(express.static(path.join(u dirname,'public'));应用程序使用(express.static('public'))代码>尝试将其更改为app.use(express.static(path.join(uu dirname,'public'),{index:'index.jade'})代码>否。在它调用index.jade之前。所以,它以前也能找到它。它还可以加载json文件。但不知怎的,d3并没有注意到这一点/啊,该死的。。。介意发布myData.json
中的数据吗?哈哈,就是这样!我的JSON文件无效。除息的。如果您更改答案并包含有效的JSON部分,那么我将选择正确的答案!谢谢你给我提示。花将近一天的时间。除息的