Javascript Alert函数未等待

时间:2018-12-03 16:13:09

标签: javascript jquery ajax alert

我有一个“注册”页面,在表单提交后,我会在其中发送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,关闭弹出警报。

注意:请注意,对于“警报”和“确认”,我的行为均相同

4 个答案:

答案 0 :(得分:0)

这是预期的确切行为。 警报对话框应用于除确认消息之外不需要用户任何响应的消息。

对话框是模式窗口-在关闭对话框之前,它们阻止用户访问程序界面的其余部分。

答案 1 :(得分:0)

您需要将警报放在./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>

答案 2 :(得分:0)

正如此question中的回答一样,您可以使用if内的警报来暂停代码。这还将仅显示一个“确定”按钮(而不是确认的“是/否”)。 重要的是!在警报调用之前,因为警报功能将始终返回 undefined

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

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

答案 3 :(得分:-1)

我猜您想使用确认对话框代替提醒。

用法示例:

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

更多信息here