我花了很多时间尝试解决此语句中的错误,以在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上找到的答案。希望它也可以帮助其他人。
答案 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函数都可能以类似的方式运行。如果它们返回某些内容,则它不会是传递的回调的返回值。