使用D3.JS访问同一网站上的API端点

时间:2016-08-07 02:34:20

标签: javascript json d3.js

我正在组建一个D3.JS可视化,作为其中的一部分,我创建了一个MongoDB数据库,并通过我的webservice上的API端点公开它。我正在使用Python Flask来执行此操作。

我已经验证发出的数据是有效的JSON格式,我确保将MIME类型设置为application/json。但是,在访问相关网址时,当我尝试使用d3.json调用该网址时,一切正常:

d3.json("http://127.0.0.1:5000/citibike-api/bike-inbounds/id/72", function (data, error) {
    if(error) throw error;
    console.log(data);
});

控制台对我大吼:

uncaught exception: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

我是否还需要做其他事情才能使此请求有效?

我是否需要使用JSONP来执行此操作?

1 个答案:

答案 0 :(得分:2)

data交换error。而不是:

d3.json("http://127.0.0.1:5000/citibike-api/bike-inbounds/id/72", function (data, error) {
    if(error) throw error;
    console.log(data);
});

应该是:

d3.json("http://127.0.0.1:5000/citibike-api/bike-inbounds/id/72", function (error, data) {
    if(error) throw error;
    console.log(data);
});

<强>解释

根据API,d3.json ...

  

...使用两个参数调用回调:错误(如果有)和解析的JSON

参数error是可选的。你可以写:

function (data){

但是,如果使用参数error,则序列必须为:

function (error, data){