Javascript 警报功能未等待

Javascript Alert function not waiting

我有一个注册页面,在提交表单后我会发送一个 AJAX POST。完全没有问题,除了在成功功能中,我有一个不等待用户输入的警报功能,而是立即执行下一个功能。

这是 SubmitHandler 函数:

submitHandler: function (form) {
$("#Sign_Button").attr("disabled", "disabled");
    $.ajax({
        type: "POST",
        url: "ws/users/insert.php",
        data: $("#form_sign").serialize(),
        success: function (data) {
            $("#Sign_Button").removeAttr("disabled");
            console.log(data);
            if (data.success == 1) {
                alert("Success.");
                window.location.href='./index.php';
            }
        }
    });
}

注意:我尝试使用 window.location.href 和 window.location,但在这两种情况下它都做同样的事情:弹出警报但不等待也重定向到 index.php,关闭弹出窗口警报。

注意:请注意,对于 Alert 和 Confirm,我都有 相同的 行为

我猜您想使用 确认 对话框而不是警报。

用法示例:

if (window.confirm("Do you really want to leave?")) { 
  window.open("exit.html", "Thanks for Visiting!");
}

更多信息here

这正是预期的行为。 警告对话框应该用于不需要用户任何响应的消息,除了消息的确认。

对话框是模态的 windows - 它们会阻止用户访问程序界面的其余部分,直到对话框关闭。

您需要将提醒放在 ./index.php 页面上

或者您可以使用对话框元素

(function() {
  var showBtn = document.getElementById('showBtn');
  var myDialog = document.getElementById('myDialog');

  showBtn.addEventListener('click', function() {
    myDialog.showModal();
  });
})();
<dialog id="myDialog">
  <form method="dialog">
    <div>Success</div>
    <button>Ok</button>
  </form>
</dialog>
<button id="showBtn">Show</button>

正如此 question 中的答案一样,您可以使用 if 内的警报暂停代码。这也将只显示一个 "OK" 按钮(而不是确认的 "yes/no")。 重要的是把!在警报调用之前,因为警报功能将 return 始终 undefined

这是代码中带有暂停代码的部分:

if (data.success == 1) {
    if(!alert("Success."))
        window.location.href='./index.php';