为什么我无法使用JSON数据

时间:2017-03-21 11:42:34

标签: javascript jquery json jstree

http://jsfiddle.net/2kwkh2uL/5498/

这是我正在尝试的示例代码,在javascript函数调用上构建jsTree但由于某种原因它没有这样做。

如果我正常加载它会构建树而没有任何问题。 谁能告诉我什么是错的。

function build_tree(tree_data) {
  $('#container').jstree({
    'core': {
      'data': tree_data
    }
  });
}


$("#gen_tree").click(function() {
  var tree_data = "[{ 'id' : 'cases_root', 'parent' : '#', 'text' : 'Cases [0,1,2]', 'case_id' : '0' },{ 'id' : 'my_cases', 'parent' : 'cases_root', 'text' : 'My Cases', 'case_id' : '0' },{ 'id' : 'active', 'parent' : 'my_cases', 'text' : 'active [0,1,2]', 'case_id' : '0' },{ 'id' : '2', 'parent' : 'active', 'text' : 'AXA Investment Managers [0,1,0]', 'case_id' : '0' },{ 'id' : '107157', 'parent' : '2', 'text' : 'Miani, Antonio [13]', 'case_id' : '107157' },{ 'id' : '98', 'parent' : 'active', 'text' : 'Graff Diamonds [0,0,1]', 'case_id' : '0' },{ 'id' : '106560', 'parent' : '98', 'text' : 'HEE JIN, Gong [18]', 'case_id' : '106560' },{ 'id' : '84', 'parent' : 'active', 'text' : 'Optiver Services BV [0,0,1]', 'case_id' : '0' },{ 'id' : '106608', 'parent' : '84', 'text' : 'SAVILUOTO, Antti [24]', 'case_id' : '106608' },]";
  build_tree(tree_data);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://static.jstree.com/latest/assets/dist/themes/default/style.min.css" rel="stylesheet" />
<script src="https://static.jstree.com/latest/assets/dist/jstree.min.js"></script>

<div id="container"></div>
<input id='gen_tree' type='button' value='Generate Tree' />

1 个答案:

答案 0 :(得分:4)

您的问题是因为您将data作为字符串给出,但它不是有效的JSON,因此无法通过jsTree库进行反序列化。

要解决问题,要么纠正JSON格式,要么更容易,将数据作为对象提供。试试这个:

function build_tree(tree_data) {
  $('#container').jstree({
    'core': {
      'data': tree_data
    }
  });
}

$("#gen_tree").click(function() {
  var tree_data = [{
    'id': 'cases_root',
    'parent': '#',
    'text': 'Cases [0,1,2]',
    'case_id': '0'
  }, {
    'id': 'my_cases',
    'parent': 'cases_root',
    'text': 'My Cases',
    'case_id': '0'
  }, {
    'id': 'active',
    'parent': 'my_cases',
    'text': 'active [0,1,2]',
    'case_id': '0'
  }, {
    'id': '2',
    'parent': 'active',
    'text': 'AXA Investment Managers [0,1,0]',
    'case_id': '0'
  }, {
    'id': '107157',
    'parent': '2',
    'text': 'Miani, Antonio [13]',
    'case_id': '107157'
  }, {
    'id': '98',
    'parent': 'active',
    'text': 'Graff Diamonds [0,0,1]',
    'case_id': '0'
  }, {
    'id': '106560',
    'parent': '98',
    'text': 'HEE JIN, Gong [18]',
    'case_id': '106560'
  }, {
    'id': '84',
    'parent': 'active',
    'text': 'Optiver Services BV [0,0,1]',
    'case_id': '0'
  }, {
    'id': '106608',
    'parent': '84',
    'text': 'SAVILUOTO, Antti [24]',
    'case_id': '106608'
  }];
  build_tree(tree_data);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://static.jstree.com/latest/assets/dist/themes/default/style.min.css" rel="stylesheet" />
<script src="https://static.jstree.com/latest/assets/dist/jstree.min.js"></script>

<div id="container"></div>
<input id='gen_tree' type='button' value='Generate Tree' />