Javascript 在AJAX调用中重新加载数据时丢失格式

Javascript 在AJAX调用中重新加载数据时丢失格式,javascript,jquery,jstree,Javascript,Jquery,Jstree,当我用AJAX调用中的数据重新加载jstree时,我遇到了一个问题。因此,在加载时,它可以正常工作,但添加数据并获得响应后,树将失去其结构 初始html是一个空div,使用ajax在单击按钮时更新数据 <div id="pnlTree"> <div id="jstree" style="text-align: left"> </div> </div> 成功:函数(数据) { 如果(数据) {

当我用AJAX调用中的数据重新加载jstree时,我遇到了一个问题。因此,在加载时,它可以正常工作,但添加数据并获得响应后,树将失去其结构

初始html是一个空div,使用ajax在单击按钮时更新数据

<div id="pnlTree">                  

  <div id="jstree" style="text-align: left">

  </div>
</div>

成功:函数(数据)
{
如果(数据)
{
变量输出='
    ; $。每个(数据、函数(键、值){
    输出+=”sooo您需要做的是在更新数据后刷新树。 现在,只有在使用
    $(“#jstree”).jstree(true).settings.core.data=output
    将日期附加到元素时,此方法才有效。如果使用
    $(“#jstree”).html(output)
    ,则此方法无效

    运行代码段以查看其运行情况:

    工作:

    $('#jstree').jstree()
    函数更新(){
    var输出=`
    • 新项目
    ` $(“#jstree”).jstree(true).settings.core.data=输出 $('#jstree').jstree(true.refresh(); }
    
    
    • 项目
    • 项目
    • 项目

    更新数据
    它可能有助于显示AJAX调用之前HTML的样子,以及AJAX调用返回的数据的样子。然后我们可以检查差异等。这是ul的一个空div。我在加载页面时加载数据。我添加一个约会并刷新db的调用,以提取约会列表nts。在这个阶段,它丢失了jstree格式,但数据正在加载。我想这是因为jstree已经在文档加载时初始化,并且在返回数据时需要重新初始化。我将看看是否可以为youHi Ludolfyn重新创建一个示例,谢谢,我现在有了一个想法。但是,当我使用$(“#jstree”).jstree(true).settings.core.data。我遇到一个错误,设置未定义。我想这可能是因为我使用的是一个单独的ajax调用,而不是单击按钮重新加载。嘿@edcoder.Hmmmm,如果您在成功状态下添加数据,ajax调用应该不会有问题。让我看看是否可以更新示例以包含ajax调用。您认为可以吗也可能是我的jstree中缺少一个设置。我唯一设置的初始化树是$(“#jstree”).jstree({});数据加载到ajax成功状态。@edcoder,我在回答中添加了一个ajax示例。我认为您不必设置任何设置。我认为只需按正确的顺序调用函数即可。我的初始化方法与您完全相同,没有设置任何设置。我也只初始化了一次,就这样。我的初始化n看起来有点不同。我没有空对象(
    {}
    )作为参数。也许可以尝试一下
    $(“#jstree”).jstree()
    ,不带
    {}
    ,谢谢你。按照你的例子,去掉大括号。我感谢你花时间清楚地解释。更多要点
    success: function (data) 
            {
                if( data )
                {
                        var output = '<ul class="appointmentlist">';
                        $.each(data, function(key, val){
    
                            output += "<li id='"+data[key].data1+"' name='dtpurchase'"+counter+"' value='" + data[key].data2 + "'>" +dtdata + "</li>";
                            //output += '<a id="dtappointment" name="dtpurchase" value="' + data[key].data3 + '"'+ '>'+data[key].purchase_date + '</a>';
                             //output += '</li>';
                             counter++;
    
                        });
                        output += '</ul>';
                    $('#jstree').html(output);
                }
    
            },