【发布时间】:2014-06-07 20:22:49
【问题描述】:
[我对所有标记的语言都很陌生,所以要温柔!]
我正在 Heroku 上构建一个小应用程序,它使用 d3.js 在世界地图上显示 JSON 数据。
我想从一个 url 直接将 json 加载到 d3.js,但是在我的本地盒子上它被客户端阻止了
GET http://earthquake-report.com/feeds/recent-eq?jsonnet::ERR_BLOCKED_BY_CLIENT
并且直接从另一个域的 javascript 加载 AFAIK 是不行的,无论如何都是服务器端配置,我很确定我无法在 Heroku 中访问。
因此,作为一种解决方法,我在 Python 中按如下方式加载它:
earthquake_url = "http://earthquake-report.com/feeds/recent-eq?json"
response = urllib2.urlopen(earthquake_url)
json_response = json.load(response)
然后我通过 jinja 参数将 json 从 python 传递给 d3.js:
return render_template('main.html', json_response=json.dumps(json_response), **templateData)
在 javascript 方面,以下为我提供了一个从本地文件加载时看起来与 json 完全相同的对象:
var json_response = {{ json_response|safe }}
console.log(json_response)
queue()
.defer(d3.json, "/static/js/readme-world.json")
.defer(d3.json, "/static/js/earthquake.json")
.await(ready);
function ready(error, world, data) {
console.log(data)
我要问的是:
- 如何将下载的 json 数据传递给 d3 中的“绘图”函数?
- 为什么我不能将我的 json_response 变量传递给返回
Uncaught TypeError: Cannot read property 'objects' of undefined的 d3.json? - 为什么我不能直接从 url 加载到 d3 中?
【问题讨论】:
标签: javascript python json d3.js jinja2