【问题标题】:jsTree not rendering using AJAXjsTree 不使用 AJAX 渲染
【发布时间】:2014-10-30 01:12:20
【问题描述】:

我正在尝试实现 jsTree 和 AJAX 以在服务器上显示动态文件结构。我的网页设置为

<div id="tree">
</div>

我的 Javascript 是

    $(document).ready(function(){

        $('#tree').jstree({
            'core' : {
                'data' : {
                    'url' : function(node) {
                        return 'folder/?folder=' + ((node.id === '#')?'':node.id);
                    },
                    'type': 'GET',
                    'dataType': 'json',
                    'contentType':'application/json',
                    'data' : function (node) {
                        return { 'id' : node.id };
                    }
                }
            }
        });
    });

我的 Java 端点以这种 JSON 格式返回一个字符串。

[
    {
        "id":"ci/",
        "text":"ci",
        "parent":"#"
    },
    {
        "id":"dev/",
        "text":"dev",
        "parent":"#"
    },
    {
        "id":"prod/",
        "text":"prod",
        "parent":"#"
    }
]

当我在 javascript 和 Java 中设置断点时,我看到“url”函数首先被调用,然后是“data”函数,然后它进入后端。它返回字符串,但没有任何反应。我只显示“正在加载...”

我从 https://github.com/vakata/jstree/zipball/3.0.8 下载了 jsTree,并且包含了 zip 中的两个文件

<script src="${pageContext.request.contextPath}/js/vendor/jstree.min.js"></script>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/style.min.css">

理想情况下,我要做的是构建一个文件夹树结构,用户最终会选择将文件上传到 S3 的位置。我想在点击时延迟加载文件夹,id 将是文件夹路径(即 dev/en_US/someFolder/images/)

【问题讨论】:

    标签: javascript ajax jstree


    【解决方案1】:

    我发现它没有渲染的问题。即使文档指出如果未设置 JSON 标头,那么您可以指定 "dataType" : "json" 它不起作用。我必须转到我的方法并将返回类型作为“application/json”添加到方法中。然后就成功了。

    【讨论】:

    • 完美。拯救了我的一天,乔恩 - 非常感谢。仅添加 URL 和数据是行不通的。它需要添加这三个顶部 - 因为 Jon 指定 'type': 'GET', 'dataType': 'json', 'contentType':'application/json',
    【解决方案2】:

    也许问题是您正在通过 ajax 加载内容,因此当文档准备好时,treejs 插件会尝试读取数据但 ajax 仍然没有响应,因此,您必须“召回”您的文档.ready 函数让插件在 ajax 请求完成时使用数据...

    类似于这个答案,不同的情况但相同的情况。

    https://stackoverflow.com/a/26559809/2043592

    【讨论】:

    • 根据文档,jsTree库jstree.com/docs/json允许通过ajax加载。 ajax 的目的是在页面加载后加载数据。这似乎不是比赛类型的条件
    猜你喜欢
    • 2018-06-26
    • 2014-04-27
    • 1970-01-01
    • 2012-11-10
    • 2012-08-29
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多