d3js:d3.json()引发意外错误
我正在使用一些工具构建数据可视化。不过我有个奇怪的错误。下面是我的(非常简单)d3js:d3.json()引发意外错误,d3.js,D3.js,我正在使用一些工具构建数据可视化。不过我有个奇怪的错误。下面是我的(非常简单)d3.json()调用: d3.json(url, function(error, json) { if (error) return console.warn(error); data = json; console.log(data); }); 我得到这个控制台错误: 我真的不知道怎么解释这个
d3.json()
调用:
d3.json(url, function(error, json) {
if (error) return console.warn(error);
data = json;
console.log(data);
});
我得到这个控制台错误:
我真的不知道怎么解释这个。FWIW,我的URL采用以下形式:
var url = 'https://congress.api.sunlightfoundation.com/legislators/locate?zip='
+ userText + '&apikey=[my key]';
当我在我的浏览器栏中手动访问它时,一切正常-我看到了我想要的JSON:
我还尝试了一些其他URL(包括使用和不使用https
),它们工作正常-d3.js
运行时不会中断。我真的不知所措,因为它似乎就是这个特定的URL——而且它似乎不是从Sunlight的一端发生的,因为当我通过浏览器栏访问它时,我可以看到我想要的JSON
对于这个模糊的问题,我很抱歉——这个错误消息(尤其是非常有意义的:
…)对我来说完全是个谜!这似乎是d3.js本身的一个突破。希望其他人遇到了这个错误/
更新为add:所以,若我使用的是本地托管或在线版本的d3.js,则错误的性质似乎会发生轻微变化。当我使用本地主机时:
<script src="d3/d3.v3.js" charset="utf-8"></script>
d3.js文件与request.open(method,url,true)断线代码>是有问题的行
当我使用d3.js的d3js.org主机时,它在d3.js的第1行中断:!函数(){
在这两种情况下(本地或在线主机),我的其他d3方法(d3.select(“body”).append(“p”).text(“Test”)
)都可以正常工作
第二次更新::和。虽然我得到了稍微不同的错误:在我的本地机器上,我得到了“Test!”来显示(作为检查d3是否完全中断)。在JSFIDLE上,我没有-我在控制台中也得到了稍微不同的错误消息。据我所见,API是:
Congress API支持所有域的CORS,因此使用任何
任何现代浏览器中的JavaScript库都应该正常工作
如果CORS不是一个选项,您可以提供一个回调参数来包装
生成一个JavaScript函数,适合与JSONP一起使用
用于在浏览器中向Congress API发出跨域请求,
当CORS不受支持时
您提供的代码也能正常工作。因此,错误似乎来自其他地方。至少您可以尝试使用JSONP
var url='1〕https://congress.api.sunlightfoundation.com/legislators/locate?zip=20004&apikey=opendataday';
json(url,函数(错误,json)
{
如果(错误)
{
返回控制台。错误(error);
}
log(json);
});
叹气-是的,CORS很好(因为我之前遇到过一些CORS块)。奇怪的是错误的“空白”。它只是指d3.js
中的那一行:request.open(方法,url,true);
。我试过在d3的本地主机和在线主机之间切换,以及它的min和non-min形式。运气不好。请注意——当我切换到d3.js的d3js.org-hosted
源代码时,它在第一个(!)一行d3.js
!其他d3方法很好用。你能用一段在第一行中断的代码来更新你的问题吗?我是说一段可执行的代码段,它可能会抛出你所说的错误。一个像我的答案中,或at或其他地方那样的本地代码段。除非这个奇怪的错误是可复制的,否则你几乎无法解决它。啊哈-哈添加了一个JSFIDLE(没有意识到,opendatakey
对他们来说是一个公共API——很有用!)。