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——很有用!)。