我一直在尝试提取json数据以使用d3构建图形,但我似乎无法将json正确加载到var中。
代码非常简单:
test.js
d3.json("/js/data.json", function(error, graph) {
alert(error)
})
这在chrome和firefox中都返回null。 data.length返回undefined。
的index.html
<html>
<title>Streamgraph</title>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="/js/test.js"></script>
</style>
</html>
我正在使用Express on Node在裸机设置上托管index.html。据Chrome称,data.json文件正在提取完成。 Chrome中的控制台不会报告任何错误。 data.json文件已使用jsonlint验证。
我不知道从哪里开始。我已经阅读了有关此问题的所有其他stackoverflow帖子,但所有帖子都与CORS有关。我认为我的文件正在加载,所以我不认为它是一个访问限制问题。
在跟踪d3时,我看到错误:
function respond() {
var status = request.status, result;
if (!status && d3_xhrHasResponse(request) || status >= 200 && status < 300 || status === 304) {
try {
result = response.call(xhr, request);
} catch (e) {
dispatch.error.call(xhr, e);
return;
}
dispatch.load.call(xhr, result);
} else {
dispatch.error.call(xhr, request);
}
}
在我的执行中,结果使用JSON正确填充,但是一旦达到dispatch.load.call,我就会得到一个未定义的弹出窗口,使用
d3.json("/js/data.json", function(error, data) {
alert(data.length)
})
思想?
答案 0 :(得分:0)
基本错误,data.length未定义。数据已正确定义。