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

时间:2016-01-13 09:02:50

标签: jquery ajax jstree jstree-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来显示我的硬编码结果,而不是默认搜索结果。

3 个答案:

答案 0 :(得分:0)

在JSTree配置中启用Ajax搜索。

$.jstree.defaults.search.ajax = true

请参阅此答案以获取此答案中的更多信息:
https://stackoverflow.com/a/20316921/1533666
https://stackoverflow.com/a/20278351/1533666
https://stackoverflow.com/a/31646865/1533666

向Ajax添加数据功能。

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

答案 1 :(得分:0)

只是对任何有相同问题的人的参考,即使jstree正确发送ajax调用,它显示它自己的结果而不是我的,我找不到任何改变它的方法。 所以我辞职了,以返回一个全新的JSON数据,并且:

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

我知道这不是最好的选择,但目前它已经成功了。

答案 2 :(得分:0)

我在jstree面临同样的问题,以下配置对我有用。

  1. 使用下面提到的参数调用搜索功能。 #是根节点。 (Ref

    $('#tree').jstree(true).search(v, false, true, '#');
    
  2. 对搜索的ajax调用应仅返回找到的子节点的父节点。如果搜索结果是child1,则child2然后搜索ajax应该只返回json格式的相应父级

    ["parent1", "parent2"]