我试图使用d3.csv引用父文件夹中的一个文件,但找不到正确的语法。
我的文件夹结构如下:
root
└── js
├── data.csv
└── myGraph.js
在js文件夹中,我有myGraph.js
d3.csv("data.csv", function(error, data) {
data.forEach(function(d) {
d.date = parseDate(d.date);
d.close = +d.close;
});
如果我把data.csv放在js文件夹中,一切都会很好。但是,如果我在根文件夹中向上移动data.csv文件
root
├── data.csv
└── js
└── myGraph.js
并将代码更改为此,然后它停止工作:
d3.csv("/../data.csv", function(error, data)
我也试过:
d3.csv("../data.csv", function(error, data)
有人知道我做错了什么吗?正确的语法是什么?非常感谢。
Robert-要实现这一点,需要做几件事:
1) 由于浏览器的安全模型,您无法通过直接指定本地目录中文件的绝对或相对路径,直接从浏览器引用/加载本地计算机上的文件。你必须使用本地网络服务器来提供你的文件,并使它们可以被浏览器访问(或者你将它们上传到你有URL的地方,你可以在d3.csv
调用中指定……但这会很乏味)。
2) 通常,您可以在包含.js
和.html
文件的目录中运行基本的HTTP服务器。例如,如果在系统范围内安装了Python3,则可以使用python -m http.server
从命令行启动目录中的HTTP服务器。然后你可以访问http://localhost:8000
上的网站。不幸的是,这个基本服务器只提供启动目录内的文件,不允许对启动目录外的其他文件进行相对路径引用。为了实现这一点,您需要运行一个功能更强大/更灵活的本地web服务器,该服务器可以设置为允许在一堆文件夹中对文件进行基于相对路径的引用。
这有点乏味,但浏览器被设计为不允许直接访问本地文件的原因是有道理的。