带有Json数据的jsTree,don';无法获取元数据

带有Json数据的jsTree,don';无法获取元数据,json,jstree,oracle-apex,Json,Jstree,Oracle Apex,我读了很多关于jsTree/Json/metadat的建议,但是我没有找到一个有效的解决方案。如果单击某个节点,我希望获取元数据(例如id) 第一个我的Json数据: [ { "data":{ "title":"TEST", "icon":"/i/small_folder.gif", "attr":{ "id":"1000000000000000021" }, "metadata":{ "id

我读了很多关于jsTree/Json/metadat的建议,但是我没有找到一个有效的解决方案。如果单击某个节点,我希望获取元数据(例如id)

第一个我的Json数据:

[
  {
    "data":{
      "title":"TEST",
      "icon":"/i/small_folder.gif",
      "attr":{
        "id":"1000000000000000021"
      },
      "metadata":{
        "id":"1000000000000000021"
      }
    }
  }
]
第二个JS函数,用于创建树并应获取单击的id(ajax调用和一些oracle apex内容)

第三个id应该位于的对象(firebug domview):

正如您所看到的,没有id。所以我猜元数据部分有些混乱,但我不知道错误在哪里

提前谢谢
马里奥

我终于追查到了我的错误。如果您可以从上面的json代码中看到:

[
  {
    "data":{
      "title":"TEST",
      "icon":"/i/small_folder.gif",
      "attr":{
        "id":"1000000000000000021"
      },
      "metadata":{
        "id":"1000000000000000021"
      }
    }
  }
]
metadataobject(?)与attr一样位于dataobject中,所有在线验证都显示我的jason代码是有效的。但元数据的正确位置在数据之后:

[
  {
    "data":{
      "title":"TEST",
      "icon":"/i/small_folder.gif",
      "attr":{
        "id":"1000000000000000021"
      }
    },
    "metadata":{
      "id":"1000000000000000021"
    }
  }
]
现在我用下面的js获取id

.bind("select_node.jstree", function (e, data) {
          console.log(data.rslt.obj.data("id"));         
        });
如果您想在li标记中添加一个id,请在数据对象上添加一个attr对象,如:

[
  {
    "attr":{
      "id":"1000000000000000021"
    },
    "data":{
      "title":"TEST",
      "icon":"/i/small_folder.gif",
      "attr":{
        "id":"1000000000000000021"
      }
    },
    "metadata":{
      "id":"1000000000000000021"
    }
  }
]
特快
马里奥

我终于追查到了我的错误。如果您可以从上面的json代码中看到:

[
  {
    "data":{
      "title":"TEST",
      "icon":"/i/small_folder.gif",
      "attr":{
        "id":"1000000000000000021"
      },
      "metadata":{
        "id":"1000000000000000021"
      }
    }
  }
]
metadataobject(?)与attr一样位于dataobject中,所有在线验证都显示我的jason代码是有效的。但元数据的正确位置在数据之后:

[
  {
    "data":{
      "title":"TEST",
      "icon":"/i/small_folder.gif",
      "attr":{
        "id":"1000000000000000021"
      }
    },
    "metadata":{
      "id":"1000000000000000021"
    }
  }
]
现在我用下面的js获取id

.bind("select_node.jstree", function (e, data) {
          console.log(data.rslt.obj.data("id"));         
        });
如果您想在li标记中添加一个id,请在数据对象上添加一个attr对象,如:

[
  {
    "attr":{
      "id":"1000000000000000021"
    },
    "data":{
      "title":"TEST",
      "icon":"/i/small_folder.gif",
      "attr":{
        "id":"1000000000000000021"
      }
    },
    "metadata":{
      "id":"1000000000000000021"
    }
  }
]
特快
马里奥

嘿@mario,你可以接受你自己的答案!这将标记问题已解决,这将帮助其他在这个问题上遇到困难的人。我一直在为
.rslt
设置“未定义”。它知道数据是一种功能嘿@Mario,你可以接受你自己的答案!这将标记问题已解决,这将帮助其他在这个问题上遇到困难的人。我一直在为
.rslt
设置“未定义”。它知道数据是一个函数