jsTree 在第二次刷新时失败
jsTree fails on second refresh
我正在使用 jsTree 插件,发现在我第二次调用 refresh() 时,树将保持错误/加载状态。这是代码:
.on('changed.jstree', function (e, data) {
var i, j, selectedNode;
selectedNode = data.node;
currentlySelectedNodeGUID = selectedNode.id;
//for (i = 0, j = data.selected.length; i < j; i++) {
// selectedNode = data.instance.get_node(data.selected[i]);
// currentlySelectedNodeGUID = selectedNode.id;
//}
$.ajax({
url: '@Url.Action("LocationProperties","Location")',
type: 'GET',
data: { id: currentlySelectedNodeGUID },
success: function (result) {
$('#locationPropertiesPartial').html(result);
},
error: function (e) {
alert(e);
}
});
});
我发现的唯一问题是我收到此错误 Uncaught TypeError: Cannot read property 'id' of undefined
在这一行currentlySelectedNodeGUID = selectedNode.id;
.
但是,数据就在那里,data.node
确实包含一个id属性,并且确实有一个值,该值被分配给currentlySelectedNodeGUID
。
我几乎不知道为什么会发生这种情况。请帮忙吗?
当您调用refresh()
时,将取消选择当前选定的节点,这将触发changed
事件。当没有选择节点时data.node
null
(或undefined
)。这就是为什么data.node.id
也是undefined
.刷新树后,节点再次被选中,这将再次触发changed
- 这次节点对象可用。
因此,在发送 ajax 查询之前,您需要检查是否确实选择了节点。
在分配之前评估data.node
或data.selected
是否为空,刷新 JSTREE 时不要出错,您可以随时刷新。
if (data.node != null) {
var dataid = data.node.id;
}
相关文章:
- PHP和JS脚本的奇怪问题,在我刷新页面之前第一次失败
- Jquery选择菜单选项在页面刷新时失败
- 登录失败时不刷新
- AngularJS:cookie 在浏览器刷新时失败
- 第一次加载时绘制到画布失败.刷新后就可以工作了
- JavaScript仅在Chrome中刷新后失败
- Ajax调用有时工作,有时工作和刷新,有时刷新和失败....
- Firefox失败-使用文档后.写入和更新位置.哈希导致页面刷新
- 在页面刷新时,单元测试在通过和失败之间交替进行
- Ruby on Rails在使用ajax刷新页面时失败
- 如何刷新jwt并重新发送失败的http请求
- AngularJS html5Mode刷新失败
- jQueryUI可排序刷新失败
- Javascript会间歇性地失败,但在页面刷新时可以正常工作
- 刷新令牌是如何工作的,以及上次失败的http请求是如何再次调用的,给出401.
- 表单提交第一次失败,并在刷新页面时工作
- jsTree 在第二次刷新时失败
- 尝试使用AJAX提交而不刷新,静默失败
- 提交失败后刷新jquery表单
- 浏览器检测使用javascript失败刷新