jstree.core.data返回null时如何显示错误消息并终止加载状态?
解决jstree加载null数据时无法显示错误提示的问题
你的问题核心在于当返回数据为null时,没有调用jstree的回调函数cb——jstree会一直处于等待数据返回的状态,所以加载图标不会消失,错误提示也没法正常展示。
我们需要调整代码,在检测到data == null时,不仅显示错误div,还要调用cb([])告诉jstree数据加载完成(空数据集),这样jstree才会停止加载状态,让错误提示正常显示。
修改后的代码如下:
$('#jstree-test').jstree({ core: { data: function (node, cb) { $.getJSON() .done(function (data, status, xhr) { if(data == null) { $('#Error').show(); // 关键:调用cb传入空数组,结束jstree的加载状态 cb.call(this, []); } else { globfunc.redirect(xhr); cb.call(this, data); } }) .fail(function (data, status, xhr) { if (xhr.hasOwnProperty("status")) { globfunc.redirect(xhr); } else { globfunc.showModal(xhr); } // 请求失败时也需要结束加载状态,避免一直显示加载图标 cb.call(this, []); }); } } })
关键修改点说明:
- 在
data == null的分支中添加cb.call(this, []):明确通知jstree数据加载已完成,没有可渲染的节点,加载图标会随之消失,错误提示div就能正常显示。 - 在
fail回调中补充cb.call(this, []):避免请求失败时jstree一直卡在加载状态,保证UI状态始终正常。
这样调整后,无论是数据返回null还是请求失败,jstree都会结束加载状态,错误提示也能按预期展示了。
内容的提问来源于stack exchange,提问作者developer n
相关产品推荐
相关产品推荐

