如何解决jsTree - 使用来自 AJAX 的 JSON 重命名更新 DOM
我有以下代码在 jsTree 的上下文菜单中重命名时调用 AJAX。 AJAX 调用使用用户输入的文本更新数据库,但仅当它是表中的值时。因此,如果用户输入的值 - 例如“1234” - 不在数据库中 - JSON 返回文本为“数据不在数据库中,再试一次”等等,并且刷新有效,但这不是我想要的。>
我只想使用响应中的新 JSON 更新 DOM。
$("#jsOrgTree").jstree({
"core" : {
"check_callback" : true,"data" : {
"url" : "getData.cfm","dataType" : "json","data" : function (node) {
return { "id" : node.id };
}
}
},"plugins": [ "search","contextmenu"],"contextmenu": {
"items": function ($node) {
"Rename": {
"separator_before": false,"separator_after": false,"icon": "/PNG/rename.png","label": "Rename","action": function () {
tree.edit($node);
}
}
// RENAME
.bind("dblclick.jstree",function (event) {
var jstree = $("#jsOrgTree").jstree(true);
var selectednode = $("#jsOrgTree").jstree('get_selected',true);
if (selectednode && selectednode.length > 0 && selectednode[0].id != "0") {
jstree.edit(selectednode[0]);
}
})
.bind("rename_node.jstree",function (e,data) {
var tree = $("#jsOrgTree").jstree(true);
var clickednode = $("#jsOrgTree").jstree("get_selected");
var nodetype = $("a[id='" + clickednode + "_anchor']").attr("data-nodetype");
if (data.node.text && data.text != data.old) {
if ( nodetype == "DBitem" ){
$.get("renameSP.cfm",{ "id" : data.node.id,"text" : data.node.text,"nodeType" : nodetype
},function( response ) {
// this works but the tree is large and want to just update DOM with JSON,rsponse is JSON
$('#jsOrgTree').jstree(true).refresh();
// check response to update DOM
}
)
.fail(function () {
data.instance.refresh();
});
}
}
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。