D3 JS - 在没有 HTTP Get 的情况下加载 JSON
d3 js - loading json without a http get
我正在学习d3。在 d3 js 中加载数据有一定的方法。但是它们似乎都做了一个HTTP GET。在我的方案中,我已经在字符串中拥有 json 数据。如何使用此字符串而不是发出另一个 http 请求?我试图为此寻找文档,但没有找到。
这有效:
d3.json("/path/flare.json", function(json) {
//rendering logic here
}
现在,如果我有:
//assume this json comes from a server (on SAME DOMAIN)
var myjson = '{"name": "flare","children": [{"name": "analytics","children": [{"name": "cluster","children": [{"name": "MergeEdge", "size": 10 }]}]}]}';
如何在 d3 中使用已经计算好的"myjson"并避免对服务器的异步调用?谢谢。
只需将d3.json
呼叫替换为
json = JSON.parse( myjson );
即:
var myjson = '{"name": "flare","children": [{"name": "analytics","children": [{"name": "cluster","children": [{"name": "MergeEdge", "size": 10 }]}]}]}';
// d3.json("/path/flare.json", function(json) { #delete this line
json = JSON.parse( myjson ); //add this line
//rendering logic here
//} #delete this line
更新 09/2013
原始代码已更改。所以varname json
应该是root
:
// d3.json("flare.json", function(error, root) { #delete this line
root = JSON.parse( myjson ); //add this line
//rendering logic here
//} #delete this line
chumkiu 的答案对我来说很好用,但需要一些调整 - 在最新版本的 d3 气泡图中,您需要定义根而不是 json,如
root = JSON.parse( myjson );
或者,您可以在代码的其余部分将"root"替换为"json"。
对于任何带着关于利用本地数据集的 d3 节点链接树的问题来回答这个答案的人,这个答案对我来说非常有用 - 非常感谢此页面上的贡献者。
根据这个例子:
http://phrogz.net/JS/d3-playground/#StockPrice_HTML
在这里,他们将图形数据存储在变量$data中,并通过 .data($data) 函数进行设置。
我会将此方法应用于您正在使用的任何图形。
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 在不阻止默认行为的情况下检测IE10中的缩放
- 如何在不传递此信息的情况下查找被调用的元素
- 在不使用lodash-get的情况下从json中提取深层属性
- GET在POST不工作XMLHttpRequest的情况下正常工作
- 试图在没有get/putImageData的情况下操作画布上的alpha
- D3 JS - 在没有 HTTP Get 的情况下加载 JSON
- 在大多数情况下,POST 请求是否可以替代 GET 请求
- 在没有ajax的情况下从javascript对php进行GET调用
- 在不使用.get().set()的情况下更新Ember.js中嵌套对象中的值
- 如何在没有POST/GET/FORM的情况下在onclick事件HTML中设置PHP会话
- 我怎样才能使它成为一个“三脚”呢?在不重定向的情况下发出GET请求
- 尝试在不使用GET的情况下将JSON加载到d3树图中
- Ajax:在GET请求的情况下,页面将被清除
- Nodejs - request.get(url)返回二进制数据在yahoo.com的情况下
- Django Ajax - $.在没有调用任何服务器端视图的情况下执行get方法成功函数
- Angularjs的rest get方法在启用了.appcache的情况下无法工作