使用D3.json函数导入json数据将返回null

时间:2015-04-26 18:03:00

标签: javascript json d3.js

我一直在尝试提取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)
})

思想?

1 个答案:

答案 0 :(得分:0)

基本错误,data.length未定义。数据已正确定义。