JsTree无法渲染AJAX获取的JSON,字面量形式却正常,求助
问题根源:JsTree 对
core.data 的格式要求 哎,这个问题我太熟了!你踩的是JsTree一个很容易忽略的小坑——它的core.data参数要求的是节点数组,而非单个节点对象。
为啥硬编码字面量能生效?
当你直接把单个节点对象写死在配置里时,JsTree内部悄悄做了隐式处理,自动把这个单个对象包装成了数组。但通过AJAX拿到的对象,它不会主动帮你做这个转换,自然就渲染不出来了。
最简单的修复方式
只需要把AJAX返回的单个对象塞进一个数组里,再传给core.data就行:
function createJsTree(json) { $('#ProductTree').jstree({ 'core': { 'themes': { 'name': 'proton', 'responsive': true }, 'check_callback': true, 'data': [json] // 把单个节点对象包装成数组 } }); }
额外验证小技巧
你可以在控制台打印两种情况的类型:
- 硬编码的对象虽然看起来是单个,但JsTree会兜底处理;而AJAX返回的
json变量是纯object类型,不符合JsTree标准的数组输入格式。
另外,如果你的后端接口能调整的话,直接返回包含这个节点的数组(比如[{"parent":null,...}]),前端也不用额外处理,但前端手动包装一下肯定是最快解决问题的办法。
内容的提问来源于stack exchange,提问作者Keivan
相关产品推荐
相关产品推荐

