gpt4 book ai didi

javascript - JsTree使用AJAX调用获取子节点

转载 作者:行者123 更新时间:2023-11-28 05:47:02 25 4
gpt4 key购买 nike

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsTree test</title>
<!-- 2 load the theme CSS file -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.min.css" />
</head>
<body>
<!-- 3 setup a container element -->
<div id="jstreee">
</div>


<!-- 4 include the jQuery library -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"> </script>
<!-- 5 include the minified jstree source -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"> </script>
<script>
var json_data = [];
$(function () {

$.get('url call here',function(data,status){

var dataL = JSON.parse(data);//console.log(dataL);
var obj = {};
obj["id"]=dataL["guid"];
obj["text"]=dataL["name"];
obj["parent"]="#";
console.log(obj);
json_data.push(obj);
$('#jstreee').jstree({ 'core' : {
'data' : json_data
} });
});
});

$('#jstreee').on("changed.jstree", function (e, data) {
console.log("we are in the function");
console.log(data.selected);
var node_clicked = data.selected;
if (node_clicked == null) {
node_clicked = "wiprohdmforg04july2016";
}
var url = "URL Call Here="+data.selected;
$.get(url,function(data,status){
var dataP = JSON.parse(data);
console.log(dataP.nodes);
var childlist = [];
console.log(dataP.nodes.length);
for(var i=0;i<dataP.nodes.length;i++){
var obj={};
obj["id"]=dataP.nodes[i].guid;
obj["text"]=dataP.nodes[i].name;
obj["parent"]=node_clicked;
//console.log("obj",obj);
var flag=0;
for(var j=0;j<json_data.length;j++){
if(obj["id"]===json_data[j]["id"]){
flag=1;
}
}
if(flag == 0){
json_data.push(obj);
}
console.log(json_data);
}
});
$('#jstreee').jstree(true).settings.core.data = json_data;
console.log("I reached here");
$('#jstreee').jstree(true).refresh(true);
});

</script>
</body>
</html>

我想用新数据重新加载树。(Json_data)但它没有填充,它成功地进行了ajax调用并检查数据的重复,如果数据存在,它不会更新json_data(新数据) )。

但是由于我使用刷新(true,它忘记了当前状态并再次从根级别(第一级别)开始)。

我希望只更新根子节点而不是完整的树。另外,我需要在树值(作为根级别)上单击两次来更新树。但来自 url 的数据仅在第一次点击时出现。

示例--> 组织------>根

最佳答案

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsTree test</title>
<!-- 2 load the theme CSS file -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/themes/default/style.m in.css" />
</head>
<body>
<!-- 3 setup a container element -->
<div id="jstreee">
</div>


<!-- 4 include the jQuery library -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"> </script>
<!-- 5 include the minified jstree source -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.2.1/jstree.min.js"> </script>
<script>
var json_data = [];var ten= 0;

$(function () {

$.get('**root node url here**',function(data,status){

var dataL = JSON.parse(data);//console.log(dataL);
var obj = {};
obj["id"]=dataL["guid"];
obj["text"]=dataL["name"];
obj["parent"]="#";
console.log(obj);
json_data.push(obj);
$('#jstreee').jstree({
'core' : {
'data' : json_data
}
});
});
});
$('#jstreee').on("select_node.jstree", function (e, data) {
console.log("we are in the function");
var node_clicked = data.selected[0];
var url = "**your url here**"+node_clicked;
$.get(url,function(data,status){
console.log(data);
if (data.nodes !== null) {
var dataP = JSON.parse(data);
console.log(dataP.nodes);
var childlist = [];
console.log(dataP.nodes.length);
for(var i=0;i<dataP.nodes.length;i++){
var obj={};
obj["id"]=dataP.nodes[i].guid;
obj["text"]=dataP.nodes[i].name;
obj["parent"]=node_clicked;
//console.log("obj",obj);
var flag=0;
for(var j=0;j<json_data.length;j++){
if(obj["id"]===json_data[j]["id"]){
flag=1;
}
}
if(flag == 0){
json_data.push(obj);
ten = 0;
}
console.log(json_data);
}
refreshh();
}
});

function refreshh(){
$('#jstreee').jstree(true).settings.core.data = json_data;
console.log("I reached here");

if(ten == 0){
$('#jstreee').jstree(true).refresh(true);
ten = 1;
}
}
});


</script>
</body>
</html>

////这段代码动态地从特定的 url 获取 dta 并用新数据填充 jstree,现在刷新没问题了成功维持当前状态准备使用只需替换网址...2 个网址,

第一个根节点 url 和第二个带有子节点特定数据的 url

将数据从 url 转换为所需格式:” 为(变量我= 0;我

"

关于javascript - JsTree使用AJAX调用获取子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38425491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com