Javascript 在AJAX调用中重新加载数据时丢失格式
当我用AJAX调用中的数据重新加载jstree时,我遇到了一个问题。因此,在加载时,它可以正常工作,但添加数据并获得响应后,树将失去其结构 初始html是一个空div,使用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> 成功:函数(数据) { 如果(数据) {
<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);
}
},