1
我正在用jstree創建樹導航。jstree 3.0.0在加載json數據時卡住
如果我使用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>
我:
- 測試JSON與jsonlint。
- 使用相同的JSON在試圖1.9.0
php
和/或nginx
- 多個瀏覽器
- 工作和不工作的情況下
- 更改響應頭到
application/json
或text/json
兩者。和1.11.0版本的jQuery。 - 通過類似的問題看看SO,但那些是關於較老的jstree。
- 嘗試從jstree運行docs/index.html。同樣的問題。
我該如何調試?在控制檯中不會出現錯誤或警告。
你的URL必須指向你的腳本是從服務的主機。這是一項安全要求,請參閱http://en.wikipedia.org/wiki/Same-origin_policy。搜索跨域。有例外,但它們需要特殊的服務器標頭。 – mvw
使用瀏覽器的JavaScript控制檯的網絡選項卡檢查網絡交互。學習使用JavaScript調試器有助於追蹤這些問題。 – mvw
@liepumartins,幾個小時前我遇到了這個問題,但是當我將正確的JSON內容類型返回給客戶端時,它解決了,具體如下:Content-Type:application/json;字符集= utf-8的 – zaitsman