jstree 3.0.0坚持加载json数据

时间:2014-02-26 09:03:44

标签: javascript jquery json jstree

我正在使用jstree创建树导航。

如果我使用HTML中定义的静态数据或分配给jstree.core.data的静态数据,它会起作用,但是当我指定jstree.core.data.url时,它不会。只是显示永远加载。

如果我将静态json文件或ajax url指定为源,则无关紧要。

<html>
<head>
<link rel="stylesheet" href="jquery.treeview.css" />
<link rel="stylesheet" href="style.min.css" />
</head>
<body>
<div id="stuck"></div>
<br/>
<div id="stuck2"></div>
<br/>
<div id="works"></div>
<script type="text/javascript" src="jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="jstree.min.js"></script>

<script type="text/javascript">
$('#stuck').jstree({
    "core" : {
    'data': {
        'url' : 'catalog.json'
        }
  },
});
$('#stuck2').jstree({
'core' : {
  'data' : {
    'url' : function (node) {
      return node.id === '#' ? 
        'ajax_roots.json' : 
        'ajax_children.json';
    },
    'data' : function (node) {
      return { 'id' : node.id };
    }
  }
 }
});
$('#works').jstree({ 'core' : {
    'data' : [
       { "id" : "ajson1", "parent" : "#", "text" : "Simple root node" },
       { "id" : "ajson2", "parent" : "#", "text" : "Root node 2" },
       { "id" : "ajson3", "parent" : "ajson2", "text" : "Child 1" },
       { "id" : "ajson4", "parent" : "ajson2", "text" : "Child 2" },
    ]
} });
</script>
</body>
</html>

我有:

  • 使用jsonlint测试了JSON。
  • 使用相同的JSON进行工作而非工作
  • application/json和/或text/json
  • 中将回复标题更改为phpnginx
  • 多个浏览器
  • 尝试过1.9.0。和jQuery的1.11.0版本。
  • 在SO上查看了类似的问题,但那些是关于较旧的jstree。
  • 尝试从jstree运行docs / index.html。同样的问题。

我该如何调试?我在控制台中没有错误或警告。

1 个答案:

答案 0 :(得分:0)

我似乎犯了很多错误:

  1. 显然我没有检查所有JSON文件,有些文件没有引号或带单引号而不是双引号。

  2. 当passign JSON数据内联时,如第3个例子中指定的那样。它也可以在引号中没有键名,因此无效的JSON在内联工作,但在通过XHR获取时无效。混乱。

  3. 由于mvw提到的安全措施,docs / index.html中的示例无效。错误消息是:

    No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.