编写 JavaScript 的最佳实践使用 AJAX 调用来决定是否应阻止默认操作

Best practices writing JavaScript that uses AJAX call to decide if default action should be prevented

我正在使用 JavaScript 和 jQuery 为正在提交的表单编写处理程序。根据特定条件,处理程序可能会允许或阻止表单提交。

这很简单,但由于处理程序需要进行 AJAX 调用而变得更加复杂。

问题是我的处理程序会立即 return 判断真或假,但我要等到稍后才能从 AJAX 调用中得到响应。但是我需要 AJAX 调用的结果来决定 return 值应该是什么。

看来这肯定是一个常见的场景。是否有处理这种情况的最佳做法?

我的回答基于评论中很快讨论的内容,有(至少)两种可能的解决方案。

  1. Async/await:

等待 ajax 调用完成并防止基于响应的默认行为。 (等待 $.ajax / 等待 $.post/get)

  1. 默认阻止(如@freedomn-m所述)

您可以始终阻止默认行为,等待 ajax 调用完成,然后执行所需的行为。例如,拒绝提交表单。

e.preventDefault();
$ajax...
...
...
if (should_not_be_prevented) {
  $("#myForm").submit()
}