【发布时间】:2017-01-19 04:39:08
【问题描述】:
我正在使用带有taggle.js 的ajax 调用来对照数据库检查键入的标记值。 taggle 文档在onBeforeTagAdd 事件上指定return false 以防止添加标签,但我知道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
}
}
});
},
});
【问题讨论】:
-
重新设计应用程序,以便您首先从服务器查询所有允许的标签到客户端数组中,然后您可以在
onBeforeTagAdd事件处理程序中使用它,而无需在那里进行任何 Ajax 调用。 -
像您使用的回调 API 要么支持异步结果,要么不支持。如果没有,那么你无法从外部做任何事情来做到这一点。您可以修改 Taggle 源代码,可以预先检查预期的标签,以便同步获得它们的信息,或者您可以更改设计以另一种方式解决您的问题。
标签: javascript jquery ajax promise