Функция оповещения Javascript не ожидает - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть страница регистрации, где после отправки формы я отправляю сообщение AJAX.Нет никаких проблем, за исключением того, что в функции успеха у меня есть функция оповещения, которая не ожидает ввода данных пользователем, а сразу выполняет следующую функцию.

Это функция 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, так и при подтверждении у меня то же поведение

Ответы [ 4 ]

0 голосов
/ 04 декабря 2018

Как было в ответе на этот вопрос , вы можете приостановить код, используя предупреждение внутри if.Это также покажет только кнопку «ОК» (вместо подтверждения «да / нет»).Важно поставить!перед тревожным вызовом, поскольку функция оповещения будет всегда возвращать undefined

это часть кода с предупреждением, приостанавливающим код:

if (data.success == 1) {
    if(!alert("Success."))
        window.location.href='./index.php';
0 голосов
/ 03 декабря 2018

Это точное поведение, которое ожидается.Диалоговое окно оповещения следует использовать для сообщений, которые не требуют никакого ответа со стороны пользователя, кроме подтверждения сообщения.

Диалоговые окна являются модальными окнами - они препятствуют доступу пользователя к остальныминтерфейс программы до закрытия диалогового окна.

0 голосов
/ 03 декабря 2018

Вам необходимо разместить предупреждение на странице ./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>
0 голосов
/ 03 декабря 2018

Полагаю, вы хотите использовать вместо предупреждения подтверждение .

Пример использования:

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

Подробнее здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...