2015-08-17 64 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 
        }; 
       } 
      } 
     },