2016-08-28 20 views
0

以下のjsTreeを使用して最初のルートノードをロードすることができません: データはサーバー上にあり、選択された各ノードごとにAJAX経由で '買取'する必要があります。私はまた、チェックボックスを使用して、選択されたノードのすべての親ノードの値を取得したい。今jsTreeがAJAXコールからルートノードをロードできません

主な問題は次のとおりです。私は、ルート・ノードをリストすることはできませんよ....

//jsTree 
    $('#testTree').jstree({ 
     'core' : {  
      'data' : {  
       'url' : function (node) {  
        return node.id === '#' ?  
        '/cgi-bin/test.pl' //url for root nodes  
        '/cgi-bin/test.pl?nodes-in-selected-heirarchy'; //url for children nodes  
      },  
       'data' : function (node) {  
        console.log('node.id='+node.id);  
        return { 'id' : node.id };  
       }  
      }  
     }  
    }); 

はすべて、これが表示されていること、フォルダのアイコンです。

私は、サーバーから取得していますJSONは次のとおりです。

{"5":"summer","8":"vacation","2":"2015","3":"2014","4":"2013","6":"winter","1":"2016","7":"birthday"} 

それはkey:value,形式です。ここで

新しい変更されたコードです:でも、これは動作しません...

$('#test').jstree({ 
    'core': { 
     'data':{        //this is the data provided to the jsTree to draw the tree. 
      'url': function(node){ 
       if(node.id === '#'){ 
        console.log('1'); 
        return "/cgi-bin/test.pl"; 
       } else { 
        console.log('2'); 
        return "/cgi-bin/test.pl?jsTreeParentKey=" + node.data("key"); 
       } 
      }, 
      'data': function(node) {   //the data sent to the server 
       console.log('node.id='+node.id); 
       return { 
        'id': node.id, 
        'xyz': 'value_xyz'   //extra set of param=value sent to server 
       }; 
      }, 
      'success': function (retData) { 
       data = []; 
       for(indx in retData){ 
        var value = retData[indx] 
        console.log('indx=i'+indx+', value='+value); 
        node = { 
         'id' : 'i'+indx, 
         'text' : value, 
         'icon' : '/', 
         //'metadata' : value, 
         'state' : {'opened' : false}    //'state' : 'closed' 
        } 
        data.push(node); 
       } 
       return data; 
      } 
      // "check_callback" : true      
     } 
    }, 
    "checkbox" : { 
     "keep_selected_style" : false 
    }, 
    "plugins" : [ "checkbox","json_data" ] 
}); 

私は、ログにこれを取得する:

1 <---- from URL 
node.id=# <----from param sent 

indx=i1, value=2016 
indx=i2, value=2015 
indx=i3, value=2014 
indx=i4, value=2013 
indx=i5, value=summer 
indx=i6, value=winter 
indx=i7, value=birthday 
indx=i8, value=vacation 

答えて

0

あなたのデータ形式(JSONは、サーバーから戻ります)が必要なjsTree形式ではありません。少なくとも、各ノードにtextプロパティを含める必要があります。

は、ここで詳細なドキュメントです:
https://github.com/vakata/jstree#the-required-json-format

+0

こんにちはイワン、見直しのためのLOT thankx !!はい、私のデータは(そして私はそれが(キー、値)のペアとして来ることを好む)です。しかし、私は '成功'のルーチンはそれを使用して、それをプラグインに処理する前に必要なデータフォーマットを作成して、 'ツリーを構築するためのデータ'と思っていました。それじゃない?なぜなら、 '成功'ルーチンで構築されたデータ配列は、(任意の)与えられた 'ノード'のためにウェブサイト上の要件に一致しているからです。サーバーからのデータ(キー、値のペア)が、どのようにしてそれがpluiginに配信される前に処理されるのか、親切にアドバイスしますか? – rajeev

+0

私はプラグインが成功ルーチンをサポートしていないことを他のところで発見しました。だから、私はdataFilterを試してみましょう(これは「成功」の一種ですか?) – rajeev

関連する問題