如何使用变量为数据加载jsTree

时间:2011-07-07 14:40:00

标签: jstree

我对wcf模块进行了ajax调用,该模块以此格式返回菜单树。 (截短的)

    { "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设置。” 我也尝试将数据放入一个全局变量,然后返回。

感谢您的帮助

3 个答案:

答案 0 :(得分:1)

你不想要

吗?
$('#webpagetree').jstree({
    "json_data": data,
...
你的fSucc功能

答案 1 :(得分:1)

在数据周围添加eval()将起作用。

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

答案 2 :(得分:0)

通过在函数 eval()中传递包含json的变量,它可以正常工作:

$('#webpagetree').jstree({
    'core': {
        'data': eval(myJson)
    }
});