2013-04-18 32 views
0

我有麻烦填充div使用jstree从单独的json文件中的数据。

为了做到这一点我试图让JSON与$ .getJSON(我不知道这是要使用正确的函数),我分配的结果,而我下次使用来填充一个变量树,这是我得到的JSON文件:

 var tree; 
      tree=$.getJSON("tree_data.json",function(data){ 
         tree=data; 
      }); 
        console.log(tree); 

,这里是我使用填充jstree DIV代码:

  $("#treeViewDiv").jstree({ 
          "json_data" : tree, 
          "themes" : { 
            "theme" : "apple", 
            "dots" : true, 
            "icons" : false 
          }, 
          "plugins" : [ 
              "themes", "json_data", "ui" 
             ] 
        }).bind("select_node.jstree", function(e, data) 
       { 
        if(jQuery.data(data.rslt.obj[0], "href")) 
        { 
         window.location=jQuery.data(data.rslt.obj[0], "href"); 
        } 
        else 
        { 
         alert("No href defined for this element"); 
        } 
       }); 

这里是我的tree_data.json文件,该文件包含t他的数据我试图填充树:

{ 
        "data":[ 
         { 
          "data" : "Search engines", 
          "children" :[ 
             {"data":{"title":"Yahoo", "icon":"./themes/file.png"}, "metadata":{"href":"http://www.yahoo.com"}}, 
             {"data":"Bing", "metadata":{"href":"http://www.bing.com"}}, 
             {"data":"Google", "children":[{"data":"Youtube", "metadata":{"href":"http://youtube.com"}},{"data":"Gmail", "metadata":{"href":"http://www.gmail.com"}},{"data":"Orkut","metadata":{"href":"http://www.orkut.com"}}], "metadata" : {"href":"http://youtube.com"}} 
             ], 
          "state" : "open" 
         }, 
         { 
          "data" : "Networking sites", 
          "children" :[ 
           {"data":"Facebook", "metadata":{"href":"http://www.fb.com"}}, 
           {"data":"Twitter", "metadata":{"href":"http://twitter.com"}} 
          ] 
         } 
        ] 
} 

由于我的代码的结果我有jstree的开始,只有一个跨度内它“加载”的文字,所以我猜测数据有麻烦加载。 这里是它的样子:

result of code above

我到底做错了什么?有任何想法吗? 谢谢你的时间。

回答

3

把整个$("#treeViewDiv").jstree({...集团的$.getJSON回调

0

$.getJSON不返回数据;该数据是在回调:

var tree; 
$.getJSON("tree_data.json", function(data){ 
    tree = data; 
    console.log(tree); 
}); 

尝试调用插件来代替上述console.log的。

+0

里面我不明白你是什么意思“的数据是在回调”的意思。看起来树是正确定义的。请检查刚刚添加的结果的图像。 – Hosni

+0

回调是第二个参数。 $ .getJSON将url(“tree_data.json”)加载到'data'中。该数据在回调中被分配给'tree',而不是作为返回值。 – Owlvark

0

的问题是,

console.log(tree); 

在回调之前执行。放置console.log(树);在回调函数中。

这样:

 var tree; 
     tree=$.getJSON("tree_data.json",function(data){ 
       tree=data; 
       console.log(tree); 
     });