2011-01-11 40 views
2

我對JavaScript編碼相當陌生,特別是使用jQuery。我試圖使用jsree試圖通過JSON填充它。現在我相信我的問題已經在相關問題上得到了回答,但我似乎無法找到我正在做的具體答案。我也提到了jsTree文檔,但我仍然無法弄清楚。從JSON中加載jsTree兒童

下面

是我想出來

buildTree : function(name, url, nodeRef) { 

    $("#"+name).jstree({ 
     "json_data" : { 
    "ajax" : { 
    "url" : url + nodeRef, 
    "data" : function(n) { 
     return { id : n.attr ? n.attr("id") : 0 }; 
    } 
    } 
    }, 

    "plugins" : [ "themes", "json_data" ] 
    }); 
    } 

的代碼,這是基本的代碼jsTree文檔JSON的副本。這裏發生了什麼是我能夠填充它的內容樹的根文件夾。以下是我收到的JSON響應。

[ 
{ 
"attr":{"id":"a3e6a1f0-ec50-4215-a6df-2065eb09115e","rel":"file"}, 
"data":"File 1","state":"" 
}, 
{ 
"attr":{"id":"b38e4a72-875b-4d69-95d3-5437f7e65575","rel":"folder"}, 
"data":"Folder 1","state":"closed" 
} 
] 

但是,當我單擊該文件夾的節點時,它正在由相同的JSON請求填充,具有相同的值。

我知道罪魁禍首是

"url" : url + nodeRef, 

,但我失去了我如何去傳遞我從響應獲取ID,替換初始nodeRef值。我嘗試過使用回調,但沒有發生任何事情。

任何幫助,非常感謝。

回答

0

您的代碼中的以下部分已經負責將「id」querystring參數附加到ajax url。該函數返回一個包含鍵/值對的對象,該對將用於要請求的URL的查詢字符串參數。

"data" : function(n) {  return { id : n.attr ? n.attr("id") : 0 };  } 

我不確定nodeRef變量在代碼中的用途是什麼。它是找到根節點嗎?如果是這樣,你可以不使用不同的查詢字符串參數嗎?

使用小提琴來確認由jsTree構建的URL是你期望的。也許它目前正在創建一個帶有兩個id查詢字符串參數的url,並且它始終使用由您的nodeRef變量提供的一個?