2011-07-07 17 views
2

この形式のメニューツリーを返すwcfモジュールへのajax呼び出しがあります。ここで(切り捨て)データの変数を使用してjsTreeをロードする方法

{ "data" : [ 
      { 
      "data" : "Home", 
      "attr" : {"webpageid" : "1", "url"  : "/Intranet/index.html", "appcode" : "Intranet Home", "parent" : "0", "enabled" : "1", "visible" : "1", "target" : "_self  ", "order" : "0", "title" : "Home", "itmname" : "index", "submenuclass" : "", "htmlid" : "homenav", "opennewtab" : "true", "externalsite" : "0"}, 
      "children" :[ 
         { 
         "data" : "Site Administration", 
         "attr" : {"webpageid" : "64", "url"  : "", "appcode" : "Mgmt/S0001", "parent" : "1", "enabled" : "1", "visible" : "1", "target" : "_self  ", "order" : "1", "title" : "Site Administration", "itmname" : "SiteAdmin", "submenuclass" : "", "htmlid" : "", "opennewtab" : "false", "externalsite" : "0"}, 
         "children" :[ 
         { 
         "data" : "Add Web Page", 
         "attr" : {"webpageid" : "65", "url"  : "/Intranet/admin/mgmt/addwebpage.html", "appcode" : "Mgmt/S0002", "parent" : "64", "enabled" : "1", "visible" : "1", "target" : "_self  ", "order" : "1", "title" : "Add Web Page", "itmname" : "AddPage", "submenuclass" : "", "htmlid" : "", "opennewtab" : "false", "externalsite" : "0"} 
         } 
         ] 
      } 
     ] 

}、...より多くのデータ... ]}

は私のAJAX呼び出しからのコールバック関数です。

function fSucc(data) { 
    $(function() { 
     $('#webpagetree').jstree({ 
      "json_data": (function() { return data; })(), 
      "ui": { "select_limit": 1 }, 
      "plugins": ["themes", "json_data", "ui", "themeroller", "dnd", "crrm"] 
     }).bind("select_node.jstree", function (e, data) { 
      alert(jQuery.data(data.rslt.obj[0], "jstree").id) 
     }); 
    }); 
} 

が、それはしていませんjsTreeのインスタンスを作成またはロードします。

代わりに「データもajax設定も提供されていません」というエラーが表示されます。 また、データをグローバル変数に入れて返しました。

任意のヘルプ

答えて

1

ためのおかげであなたは自分のfSucc機能で

$('#webpagetree').jstree({ 
    "json_data": data, 
... 

をしたいと思いませんか?

+0

Iwouldはそう思っていたが、私はそれを試してみました、それは動作しませんでした。私は1.5.2を使用しています。それが問題なのだろうか? – edepperson

+0

Hmm、OK。私は3つのことを試してみる:1.あなたの関数のデータをハードコードして、期待どおりの作業をチェックする。 2. console.logを使用して、 'data'の値をチェックして、期待どおりになっていることを確認します。 3:あなたのajaxから単純なバージョンのデータを出力してみてください。例えば、jstree docsの作業用jsonのコピーです。 – ChrisA

1

データの周りにeval()を追加すると機能します。

"json_data": { "data" : eval(data) }, 
0

それは(関数内ではevalをJSONを含む変数を渡すことでうまく動作します)

$('#webpagetree').jstree({ 
    'core': { 
     'data': eval(myJson) 
    } 
}); 
関連する問題