javascript — дождитесь подтверждения Bootbox для запуска Ajax

Мне нужно запустить функцию AJAX после того, как подтверждение нажата на модале подтверждения загрузочной коробки. Модал кратковременно мигает, затем php-код запускается без ожидания. Как мне заставить это ждать.

Мой Javascript запускается при удалении загрузочной коробки, но я хочу подтвердить, прежде чем он запустится

Мой код

$('#change_pass_form').submit(function () {
bootbox.confirm({
message: "Your password is about to be changed. Are you sure?",
buttons: {
cancel: {label: '<i class="fa fa-times"></i> Cancel'},
confirm: {label: '<i class="fa fa-check"></i> Confirm'}
},
callback: function (result) {
if (result === 'true') {
$.ajax({
type: 'POST',
url: 'php_files/profile_php_files/profile_password_change_process.php',
data: {
user_id: sessionStorage.getItem('user_id'),
new_password: $('#new_password').val(),
repeat_password: $('#repeat_password').val()
},
success: function (data) {
if (data === 'correct') {
bootbox.alert({
size: 'small',
message: 'Your password has been changed. You will now be logged out.',
callback: function () {
window.location.replace('index.html');
}
});
return true;
} else {
bootbox.alert({
size: 'small',
message: data
});
return false;
}
}
});
} else {
return false;
}
}
});
});

2

Решение

Все return false а также return true возвращаются к обратным вызовам, а не к функции внешнего обработчика отправки. Кроме того, они происходят только после асинхронных событий, поэтому процесс отправки по умолчанию никогда не блокируется.

Просто запретите отправку браузером по умолчанию

$('#change_pass_form').submit(function (event) {
event.preventDefault();
1

Другие решения

Других решений пока нет …