如何将 jstree 搜索更改为 ajax 搜索

how to change jstree search into ajax search

我正在尝试使用以下配置将我的 jstree 搜索转换为 ajax 搜索,我的问题是,即使它发送 "str" 到 url 并且我收到json ["#id"] 中的数据,但 jstree 仍然进行正常搜索

// $.jstree.defaults.search.ajax = true;

$('#node_tree').jstree({
        'core' : {
        'data': fill_tree(),
    },
    "plugins": ["search", "state","themes"],
    'search': {
        'show_only_matches': true,
        'ajax': {
            'url': '/device/jstree',
            'dataType': 'json',
            'type': 'GET'
    }

我的 ajax 已经在工作了,我需要 jstree 来显示我的硬编码结果而不是默认搜索。

在 JSTree 配置中启用 Ajax 搜索。

$.jstree.defaults.search.ajax = true

请参阅此答案以获取更多信息:


为您的 Ajax 添加数据功能。

'data' : function(str) {
  return { "search_str" : str };
},

仅供遇到相同问题的任何人参考,即使 jstree 正确发送 ajax 调用,它显示的是它自己的结果而不是我的结果,我找不到任何方法来改变它。 所以我不得不接受 return 一个全新的 JSON 数据并且:

$('#tree').jstree(true).settings.core.data = newJsonData;
$('#tree').jstree(true).refresh();

我知道这不是最好的选择,但它暂时起到了作用。

我在 jstree 中遇到了同样的问题,下面的配置对我有用。

  1. 使用以下参数调用搜索函数。 # 作为根节点。 (Ref)

    $('#tree').jstree(true).search(v, false, true, '#');
    
  2. 对搜索的 ajax 调用应该 return 仅找到 child 的 parent 个节点。如果搜索结果是 child1, child2 那么搜索 ajax 应该 return 只 parent 在 json 格式

    ["parent1", "parent2"]