d3.json console.log返回undefined或JSON.parse在第1行返回意外字符

时间:2014-08-12 19:26:13

标签: javascript json parsing d3.js console

我花了很多时间尝试解决此语句中的错误,以在console.log中显示json url的内容:

d3.json( urlpathtojson, function(error, jsondata ) {
    var jsonfile = JSON.parse(jsondata);
    console.log(jsonfile);
    }):

我可以看到GET语句和JSON请求的内容,但控制台发出以下错误:

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

或者在没有解析的其他情况下:

ReferenceError: jsondata is not defined

或者

jsondata is undefined

以下是我在Stackoverflow上找到的答案。希望它也可以帮助其他人。

1 个答案:

答案 0 :(得分:1)

问题是控制台日志语句在没有等待返回json文件的情况下运行,导致上述错误。

通过Stackoverflow我从这个问题中找到了这个解决方案: Returning array from d3.json()

function doSomethingWithData(jsondata) {
  console.log(jsondata);
}

d3.json(dataPath, doSomethingWithData);

注意如何将doSomethingWithData直接传递给d3.json,而不是在匿名内部函数中单独调用它。

注意:这不是d3.js的特殊问题。基本上,所有异步的javascript函数都可能以类似的方式运行。如果它们返回某些内容,则它不会是传递的回调的返回值。