2015-08-17 29 views
1

我在我的应用程序中使用JSTree。JSTree使用Ajax调用搜索/延迟加载

我无法使用ajax调用实现搜索功能。

在这里,我把我的尝试。

$(document).ready(function() { 
    $("#jstree_demo_div").jstree({ 
     "core": { 
      "data": { 
       "url": "Tree/Index", 
       "data": function (node) { 
        return { "id": node.id }; 
       } 
      } 
     }, 
     "search": { 
      "url": "Tree/Index", 
      "data": function (node) { 
       return { "id": node }; 
      } 
     }, 
     "plugins": ["search"], 
    }); 

    $('#searchTree').on('click', function (event) { 
     $("#jstree_demo_div").jstree('search', '1'); 
    }); 
}); 

每当我按下按钮它来到事件和之后,该调用是不是服务器。

我想要的是使ajax调用搜索并完全重新创建树视图为搜索。

我无法理解我该怎么做?

我已经检查了以下链接。

JSTree API Documentation

jsTree search with Ajax/JSON not calling URL

在上面的计算器问题我无法理解什么是“json_data”,为什么,以及如何使用它?

https://www.jstree.com中没有一个例子使用了名为“json_data”的变量。

请帮我理解JSTree Ajax调用/懒加载如何使用搜索功能与示例。

enter image description here

这对我来说真的很有帮助。先谢谢你。

回答

1

search.ajax.data配置选项不能是一个功能 - 它应该是一个对象(就像一个正常的jQuery的AJAX配置),jstree将只有str属性添加到该对象。至于GET或POST - 使用任何你想要的 - 你需要指定为search.ajax是一个有效的jQuery AJAX配置。

+0

是的,我试过了,如何在搜索中重新创建JSTree?我的意思是当我执行搜索时,我想要显示并展开一组节点。 –

1

更改search设置:

"search": { 
    "ajax": { 
     "url": url, 
      } 
      }, 
+0

但它没有通过价值。除此之外,为什么我需要写“阿贾克斯”,因为在加载数据我不需要写。只是为了更多的理解。谢谢。 –

+0

它将值作为'?str = 1'传递,只需在浏览器中检查它并查看发送到服务器的url。我不知道,只是通过调试,我意识到它检查ajax,如果没有发现它在本地搜索。 –

+0

是的。正如你所说的那样,它会检查“ajax”。我也发现通过调试。但我无法理解和解决它。谢谢。将尝试通过调试JSTree.js更多地了解谢谢。 –

0

你的搜索配置需要改正,你需要将关键字传递给你的网址的关键字搜索,你应该使用GET方法以检索数据。 试试这个

 // Configuring the search plugin 
     "search" : { 
      // As this has been a common question - async search 
      // Same as above - the `ajax` config option is actually jQuery's AJAX object 
      "ajax" : { 
       "url" : "Tree/Search", 
       // You get the search string as a parameter 
       "data" : function (str) { 
        return { 
         "operation" : "search", 
         "q" : str 
        }; 
       } 
      } 
     },