D3.js初学者:将PHP生成的JSON用于构建可折叠树图表
改造D3.js可折叠树以使用本地PHP生成的JSON
嘿,很高兴帮你搞定这个问题!你说得完全没错,只需要替换掉示例里异步加载外部JSON的那段代码就行——毕竟你已经通过PHP把数据直接注入到页面里了,根本不用再发额外的请求啦。
具体修改步骤
原来的示例用d3.json()异步拉取flare.json文件,现在我们直接用你已经定义好的JsonConvert变量,把整块异步代码替换成下面的内容:
// 直接用PHP生成的JSON变量作为树的根节点 var root = JsonConvert; // 设置节点初始位置(和示例逻辑保持一致) root.x0 = height / 2; root.y0 = 0; // 折叠子节点的工具函数(和示例逻辑相同) function collapse(d) { if (d.children) { d._children = d.children; d._children.forEach(collapse); d.children = null; } } // 默认折叠根节点的所有子节点(想默认展开就删掉这行) root.children.forEach(collapse); // 初始化渲染树结构 update(root);
关键注意事项
- JSON结构要匹配:你的
JsonConvert数据结构得和示例里的flare.json对齐——每个节点需要有name字段,子节点要放在children数组里。如果你的数据用了不同的字段名(比如用title代替name,subItems代替children),记得在D3的渲染代码里对应修改,比如把d.name改成d.title,d.children改成d.subItems。 - 初始状态可调整:示例默认是折叠所有子节点的,要是希望页面加载时根节点的子节点就展开,直接删掉
root.children.forEach(collapse);这行即可。
这样改完之后,你的D3可折叠树就能完美用上PHP返回的数据啦!
内容的提问来源于stack exchange,提问作者jacques
相关产品推荐
相关产品推荐

