如何在从WEB-Service收到的D3中使用JSON数据?

时间:2017-01-13 09:46:16

标签: javascript json rest d3.js

到目前为止,我的程序使用.json文件绘制图表。代码是这样的:

d3.json("data.json", function(data) {

    //use data

});

这很好用。 .json文件中的数据来自我自己的REST服务,该服务在NetBeans中运行。目前我只是将REST-service-call的输出复制并粘贴到.json文件(位于index.html所在的文件夹中)并保存。由于这只是一种愚蠢的方式,我希望我的JavaScript调用我的REST服务并使用检索的数据而不是.json文件。所以我试过这样的事情:

d3.json('http://localhost:port/data', function(data) {

    //use data

});

(url显然只是一个假人)检查NetBeans-networkmonitor,它总是一个状态为200的GET请求,我想这应该没问题。响应头包含“content-type:application / json”,如果我只是在我的浏览器中调用url(我之前将它们复制粘贴到.json文件中),响应本身就是我收到的完全相同的数据 - >数据没有区别)。问题是:图表不再显示了。如果我使用“文件”运行hmtl -code它可以工作,如果我使用“call Rest-service”-code运行它,它就不再显示任何内容了。有谁知道为什么会这样?

有趣的是,我的rest-service的响应代码是红色的,并且NetBeans网络监视器(screenshot)中没有内容类型。

Edit1:屏幕截图中的表格没有显示内容类型,尽管响应标题显示“Content-type:application / json”。

1 个答案:

答案 0 :(得分:0)

感谢ranjeet8082,我找到了问题的解决方案!

我在index.html上按f12查看浏览器的错误日志(chrome)。控制台显示以下错误:

  

" XMLHttpRequest无法加载http:// rest-url / data。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' rest-url'因此不允许访问。"

(" rest-url"是我的rest-url的假人)

我可以通过简单地将" Allow-Control-Allow-Origin:*" -addon添加到我的chrome-addons来解决问题。这可以在this link中找到。谢谢你们的贡献。