You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 20:57:59