我正在使用带有taggle的ajax调用.js来检查数据库的类型标签值。taggle 文档指定return false
onBeforeTagAdd
事件以防止添加标签,但我知道 ajax 无法做到这一点,因为它是异步的。我已经看到其他 SO 问题建议承诺使函数依赖于 ajax 响应,但是当 ajax 调用位于依赖其响应的父函数内时,我对如何使用承诺感到困惑 - 任何人都可以提供建议吗?下面是带有 ajax 调用的代码:
new Taggle('tagexample', {
onBeforeTagAdd: function(event, tag) {
// return false here would prevent tag from being added
$.ajax({
method:"POST",
url:"inputcheck.php",
data:"tag="+tag,
dataType:"html",
success:function(result){
alert(result);
if (result == 'no') {
// return false here won't work
}
}
});
},
});
Taggle 需要支持 onBeforeTagAdd 方法上的承诺,而从外观上看则不支持。
我唯一能想到的可能有效的方法是始终返回 false(在进行 ajax 调用之后),然后动态创建标签(如果是)。
new Taggle('tagexample', {
onBeforeTagAdd: function(event, tag) {
$.ajax({
method:"POST",
url:"inputcheck.php",
data:"tag="+tag,
dataType:"html",
success:function(result){
alert(result);
if (result == 'yes') {
// create tag
}
}
});
return false;
},
});