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 (将#修改为@)