Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery jsTree:在AJAX调用后刷新内容,然后打开所有_Jquery_Jstree - Fatal编程技术网

Jquery jsTree:在AJAX调用后刷新内容,然后打开所有

Jquery jsTree:在AJAX调用后刷新内容,然后打开所有,jquery,jstree,Jquery,Jstree,我已经用返回JSON数据的AJAX调用加载了一个jsTree。当移动节点并且我希望刷新树时,会进行另一个AJAX调用: $("#my_tree").jstree({ "core": { ... }) .on("move_node.jstree", function(node,nodes){ $.ajax({ url: "/path/to/ajax", type: "POST", data: { action: "mov

我已经用返回JSON数据的AJAX调用加载了一个jsTree。当移动节点并且我希望刷新树时,会进行另一个AJAX调用:

$("#my_tree").jstree({
   "core": {
      ...
})
.on("move_node.jstree", function(node,nodes){
   $.ajax({
      url: "/path/to/ajax",
      type: "POST",
      data: {
         action: "move",
         ...
      },
      success: function () {
         $('#my_div').jstree(true).refresh(false, true);
      }
   });
})
这是可行的,但我希望刷新时打开树。这不起作用,树仍然倒塌

      success: function () {
        $('#my_tree').jstree(true).refresh(false, true);
        $('#my_tree').jstree("open_all");
        [or even $("#my_tree").trigger("loaded.jstree"); ]
      }
但是,当页面加载以下内容时,“open_all”可以正常工作:

.bind("loaded.jstree", function (event, data) {
   $(this).jstree("open_all");
});
如何刷新并打开树?谢谢你的帮助

[编辑]托马拉克回答后的精度:


移动完成后,数据库端会发生一些进程,必须通过AJAX加载新内容,然后再显示。这就是刷新树的原因。

添加此选项将在刷新后重新打开树:

.bind("refresh.jstree", function (event, data) {
  $(this).jstree("open_all");
}

最初,在客户端加载树。移动一个节点。这意味着,客户端已经处于预期状态(节点位于新位置)。您可以通过Ajax将移动告知服务器。Ajax调用成功(服务器已保存移动)。结果,您根本不需要刷新树-它已经完全是它应该的样子了。(但是当Ajax调用失败时,您需要将节点移回并通知用户错误。)@Tomalak如果我不这样做,我不会问如何做…;-)移动完成后,数据库端会发生一些进程,必须通过AJAX加载新内容,然后再显示。再一次,它工作正常,我只是想在刷新后打开树。但是你已经这样做了。。。至少是第一部分。在Ajax成功时,什么也不做。这里有一个关于“关于Ajax错误”部分的线程:我的观点是,在不破坏树状态的情况下,不必恢复树状态(什么是打开的、选中的或其他任何部分)。刷新树会破坏树状态。如果你能避免这种情况,你会过得更好。