在Ajax请求中重新加载jsTree数据

时间:2011-09-13 20:25:08

标签: jstree

我的jsTree包含树加载时设置的html数据(请参阅下面的javascript)。这工作正常。但是,我希望能够基于某些用户操作在Ajax请求中重新加载整个树。我基本上需要重新加载从Ajax请求返回的所有树数据。这可能吗?

我目前的代码如下:

function setJoinType(node, joinType) {
    $.ajax({
        type: "POST",
        url: "qbwizard.aspx/SetJoinType",
        contentType: "application/json; charset=utf-8",
        data: "{'alias': '" + node[0].id + "', 'joinType': '" + joinType + "'}",
        dataType: "json",
        success: RedrawJoinSummary,
        error: AjaxFailed
    });
    return true;
}
function RedrawJoinSummary(data) {
    //$("#tvJoinSummary").jstree('destroy'); 
    $("#tvJoinSummary").jstree("html", data.d);
    $("#tvJoinSummary").jstree("refresh", -1);
}

2 个答案:

答案 0 :(得分:3)

谢谢拉德克。

我实际上是通过将jstree初始化代码放入函数(tvJoinWorkspaceTreeviewScriptInit)然后在重置html后调用该函数来实现的。可能是节点都失去了状态(打开/关闭)。我决定使用Ajax回调和javascript再次构建树,因为它最终变得更容易。

$("div#tvJoinWorkspace").html(data);
$("#tvJoinWorkspace").jstree("destroy");
tvJoinWorkspaceTreeviewScriptInit(null);

答案 1 :(得分:1)

这个怎么样?如果您通过

定义树

$("#jstree").jstree({你的HTML是

<div id="tree">
  <div id="jstree">
  </div>
</div>

然后你可以

<div id="jstree"></div>

之类的内容替换<div id="jstree_ajax"></div>