今天 在弄ztree 目录树的删除的时候;遇到了一个问题
问题:当我点击目录树删除图标 执行ajax后台 删除操作 当后台还未删除是否成功的信息是 页面上目录树就已经删除掉那个节点, 但后台数据库不一定成功删除
解决办法:我在 beforeRemove 执行 ajax删除操作 如果是error 返回false 如果是success 返回 true; 如果返回的是false, onRemove()就不会执行,节点就不会删除;
但是又有一个问题 就是ajax的执行顺序问题
function beforeRemove(treeId, treeNode) {
var rel=confirm("确认删除 节点 -- " + treeNode.name + " 吗?");
if(rel)
{
return delete(treeNode.id);
}else{return rel;}
}
function delete(treeid){ //删除目录
var rel;
$.ajax({
url: '',
type: 'POST',
//async:false,
dataType:'json',
contentType : "application/json; charset=utf-8",
data: JSON.stringify(param),
success: function(data) {
alert("删除成功");
rel=true;
},
error: function(xhr, textStatus, errorThrown) {
rel=false;
}
});
return rel;
}
问题2:rel可能是undefined;没有执行ajax里面的success 或者error 就执行return rel;
解决办法:加一个async:false, 这样页面会出现一个假死状态直到ajax里面的success 或者error执行完才会执行接下来的步骤