Javascript jstree 3.0.0在加载json数据时卡住了

Javascript jstree 3.0.0在加载json数据时卡住了,javascript,jquery,json,jstree,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" hre

我正在用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>



$(“#卡住了”).jstree({ “核心”:{ “数据”:{ “url”:“catalog.json” } }, }); $('#stuck2').jstree({ “核心”:{ “数据”:{ “url”:函数(节点){ return node.id=='#'? “ajax_root.json”: 'ajax_children.json'; }, “数据”:函数(节点){ 返回{'id':node.id}; } } } }); $('#works').jstree({'core':{ “数据”:[ {“id”:“ajson1”,“父节点”:“#”,“文本”:“简单根节点”}, {“id”:“ajson2”,“父节点”:“#”,“文本”:“根节点2”}, {“id”:“ajson3”,“parent”:“ajson2”,“text”:“Child 1”}, {“id”:“ajson4”,“parent”:“ajson2”,“text”:“Child 2”}, ] } });
我有:

  • 使用测试JSON
  • 对工作和非工作案例使用相同的JSON
  • php
    和/或
    nginx
    中的响应标题更改为
    application/json
    text/json
  • 多浏览器
  • 尝试了1.9.0。以及jQuery的1.11.0版本
  • 查看了类似的问题,但这些都是关于旧jstree的
  • 尝试从jstree运行docs/index.html。同样的问题

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

我似乎犯了很多错误:

  • 显然我没有检查所有的JSON文件,有些文件的键名没有引号,或者是单引号而不是双引号

  • 当传递JSON数据内联时,如第3个示例中指定的。它也可以在没有引号的情况下工作,因此无效的JSON可以内联工作,但在通过
    XHR
    获取它时就不行了。令人困惑

  • 由于mvw提到的安全措施,docs/index.html中的示例不起作用。错误消息是:

    请求的资源上不存在“Access Control Allow Origin”头。因此,不允许访问源站“null”。


  • 您的URL必须指向提供脚本的主机。这是一项安全要求,请参阅。搜索跨域。也有例外,但它们需要特殊的服务器头。请使用浏览器JavaScript控制台的“网络”选项卡检查网络交互。学习使用JavaScript调试器有助于跟踪此类问题。@liepumartins,我几个小时前就遇到了这个问题,但当我将正确的JSON内容类型传回客户机时,问题就解决了,具体来说就是:内容类型:application/JSON;字符集=utf-8