问题描述
我有以下代码在 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 (将#修改为@)