我使用d3.json从Enterprise GitHub中提取json链接(与js文件所在的repo /文件夹相同。
d3.json("https://raw.github.exampleEnterprise.com/path/to/repo/data.json?token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",function(error, flare) {
console.log(flare);
root = flare;
update(root);
});
我收到错误TypeError: flare is undefined
当我从公共GitHub中取出它时,一切正常
d3.json("https://raw.githubusercontent.com/path/to/repo/data.json",function(error, flare) {
console.log(flare);
root = flare;
update(root);
});
当我在浏览器的地址栏中粘贴带有令牌的企业链接时,我可以看到整个JSON文件。所以奇怪的是,它没有通过,或者为什么。
编辑: 我已经添加了错误返回
d3.json("https://raw.github.exampleEnterprise.com/path/to/repo/data.json?token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",function(error, flare) {
if(error){ console.log("There was an error", error); }
console.log(flare);
root = flare;
update(root);
});
并且可以看到我收到的错误是:
错误XMLHttpRequest {onreadystatechange:null,readyState:4,timeout:0,withCredentials:false,upload:XMLHttpRequestUpload,responseURL:"",status:0,statusText:" ",responseType:"",响应:"" }
编辑2:在网络选项卡中,我看到了对我的GET请求的200响应。检查"响应"请求的标签我可以看到一个红色错误:SyntaxError: JSON.parse: unexpected end of data at line 1 column 1 of the JSON data
我尝试使用d3.text()而不是d3.json(),它仍然返回" undefined" (正如我在控制台中看到的那样)。这就解释了这个错误。
答案 0 :(得分:2)
在该回调中,您不会检查是否有错误。
如果出现错误,数据将不确定。
如果你要做这样的事情:
d3.json("__url__", function(error, data){
if(error){ console.log("There was an error", error); }
else{
console.log("Here is your data: ", data);
}
})
您可以查看是否存在错误,只要没有错误,就可以访问数据对象。
希望这有帮助。