2011-08-04 36 views
2

有一些節點,從AJAX調用我的jsTree中的數據。如何在點擊時刷新`ajax`節點?

如何刷新數據而不是重新加載整個樹?

  • 最好的將是簡單點擊我希望在節點上刷新
  • 上下文菜單也沒關係

回答

3

這個怎麼樣?

<html> 
<head> 
<script language="javascript" type="text/javascript" src="jquery.min.js"></script> 
<script language="javascript" type="text/javascript" src="jquery.jstree.js"></script> 
<script> 
var treeConfig = { 
    "json_data" : { 
    "data" : [{ 
     "data" : "Root", 
     "state" : "closed", 
     "children" : "" 
     }], 
    "ajax" : { 
     "url" : "http://localhost/tree.json", 
     "data" : function (node) {       
      return { query : "Value" }; 
     } 
    } 
    }, 
    "plugins" : [ "themes", "json_data", "ui" ], 
}; 

$(document).ready(function(){ 
$("#treeContainer").jstree(treeConfig); 

$('#treeContainer a').live('click',function(){ 
    var tree = jQuery.jstree._reference("#treeContainer"); 
    var currentNode = tree._get_node(null, false); 
    tree.refresh(currentNode); 
}); 

}); 
</script> 
</head> 

<body> 
<div id="treeContainer"></div> 
</body> 
</html> 

下面是我在做什麼:使用JSON數據插件

  • (但概念是HTML和XML插件類似)
  • 加載初始樹節點(「根」)從數據配置對象
  • 設置AJAX配置對象,以便所有其他節點在最初打開時應用其ajax子數據(適用於'state'爲'closed'且'children'爲'empty'的任何節點)
  • 使用AJAX數據函數傳遞正確的查詢字符串以獲取正在打開的節點的相關數據。我的示例總是提取http://localhost/tree.json?query=Value,但您可能想要將值設置爲節點ID,以便服務器發回相關數據。

到目前爲止,僅在第一次打開節點時,纔會對節點數據發出ajax請求。最後的步驟是:

  • 創建導致單個節點每次被點擊
+0

它不爲我工作時間刷新其數據的點擊功能。我想要的是能夠根據用戶請求再次調用ajax調用。你的代碼不會那樣做。 – Radek

+0

我改進了我的示例以顯示完整的jstree配置,並添加了詳細的註釋。這適用於我的測試服務器。 – mtmacdonald

+0

很好地工作。謝謝你。 – Radek