编写 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 值应该是什么。
看来这肯定是一个常见的场景。是否有处理这种情况的最佳做法?
我的回答基于评论中很快讨论的内容,有(至少)两种可能的解决方案。
- Async/await:
等待 ajax 调用完成并防止基于响应的默认行为。 (等待 $.ajax / 等待 $.post/get)
- 默认阻止(如@freedomn-m所述)
您可以始终阻止默认行为,等待 ajax 调用完成,然后执行所需的行为。例如,拒绝提交表单。
e.preventDefault();
$ajax...
...
...
if (should_not_be_prevented) {
$("#myForm").submit()
}
我正在使用 JavaScript 和 jQuery 为正在提交的表单编写处理程序。根据特定条件,处理程序可能会允许或阻止表单提交。
这很简单,但由于处理程序需要进行 AJAX 调用而变得更加复杂。
问题是我的处理程序会立即 return 判断真或假,但我要等到稍后才能从 AJAX 调用中得到响应。但是我需要 AJAX 调用的结果来决定 return 值应该是什么。
看来这肯定是一个常见的场景。是否有处理这种情况的最佳做法?
我的回答基于评论中很快讨论的内容,有(至少)两种可能的解决方案。
- Async/await:
等待 ajax 调用完成并防止基于响应的默认行为。 (等待 $.ajax / 等待 $.post/get)
- 默认阻止(如@freedomn-m所述)
您可以始终阻止默认行为,等待 ajax 调用完成,然后执行所需的行为。例如,拒绝提交表单。
e.preventDefault();
$ajax...
...
...
if (should_not_be_prevented) {
$("#myForm").submit()
}