繁体   English   中英

通过Ajax调用将数据从MVC控制器传递到jsTree。

[英]Passing data from MVC controller to jsTree through ajax calls.

我有一个带有父节点和5个子节点的jsTree。 他们运作良好。 我正在尝试实现一个动态的jsTree,在其中单击一个节点,一个ajax调用应将该节点的ID传递给我的Java MVC spring-boot控制器,并将一个键作为子节点的ID并将值作为子节点的名称传递给Map。

到目前为止,我设法获得了被单击的子节点ID的值,并通过ajax调用将其传递给我的java控制器。 但是由于无法确定如何构造从控制器传递到ajax调用的数据,而后者又必须实现jsTree,因此我无法继续。 这是我现有的jsTree的代码-

<div id="container">
 <ul>
   <li id = "id1">Root
      <ul>
        <li id="id 1-1">child 1</li>
        <li id="id 1-2">child 2</li>
        <li id="id 1-3">child 3</li>
        <li id="id 1-4">child 4</li>
        <li id="id 1-5">child 5</li>       
      </ul>
   </li>
 </ul>
</div>

这是我的ajax -jquery调用的代码,该代码将nodeID传递给控制器​​-

$(function() {
  $('#container').on('changed.jstree', function (e, data) {
    var i, j, r = [], rid = [];
    for(i = 0, j = data.selected.length; i < j; i++) {
      r.push(data.instance.get_node(data.selected[i]).text);
      rid.push(data.instance.get_node(data.selected[i]).id);
    }
    console.clear();
    console.log('Selected: ' + r.join(', '));
    console.log('Selected id: ' + rid.join(', '));
    $.ajax({
        type: 'GET',
        url: "http://localhost:8080/tree/object?nodeID="+rid.join(', '),
        contentType: 'text/plain',
        crossDomain: false,
        async:true,
        success:function() {

            }   
    });
  })
  .jstree();
});

我对jsTree,ajax和jquery的了解受到限制。 任何帮助,将不胜感激。 我正在研究jsTree的文档:通过此处的 ajax调用填充树。

您不想进行自己的AJAX调用-您可以按以下方式设置要使用的URL: https ://www.jstree.com/api/#/ ? f = $ .jstree.defaults.core.data和JSTree将为您执行Ajax调用。

将url属性设置为您的url,并将数据设置为返回节点ID的函数;

'url' : 'ajax_nodes.html',
'data' : function (node) {
    return { 'id' : node.id };
}

如果从Ajax调用返回数据-您可能应该以JSON而不是HTML形式返回数据。

因此,此页面是您应查看的内容: https : //www.jstree.com/docs/json/

您所需要的最少是一个像这样的JSON对象;

{
  id          : "string" // will be autogenerated if omitted
  text        : "string" 
  children    : false
}

如果子节点可以扩展并触发自身的其他所有事件(作为传递其子节点的ID),则子节点应为true;如果它是叶节点,则子节点应为false。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM