Не могу понять в чем проблема. При обновлении страницы функция срабатывает сразу, а нужно чтоб при клике на кнопку отправить.
function sendPostQuery(str, url, messageSuccess, after){
$.ajax({
type: "POST",
url: url,
data: str,
success: function(msg) {
if(msg == 'OK') {
$('.result').remove();
$('body').append('<div class="result"><div class="alert alert-success alert-dismissible fade show" role="alert">'+messageSuccess+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div></div>');
$('.result').fadeIn(1000,'linear');
if(after == 'reload'){ setTimeout(() => window.location.reload(), 2000) }
if(after == 'index'){ setTimeout(() => window.location.href = "/", 2500) }
} else {
$('.result').remove();
$('body').append('<div class="result"><div class="alert alert-danger alert-dismissible fade show" role="alert">'+msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div></div>');
$('.result').fadeIn(1000,'linear');
setTimeout(() => $('.result').hide(1000), 20000);
}
}
});
return false;
}
$("#login-form").submit( sendPostQuery( $(this).serialize(), 'includes/login.php', 'Вход выполнен!', 'index') );
Есть несколько форм, и хотелось бы немного универcальности, а не писать под каждую отдельный ajax.
Обновляю страниц и сразу выскакивает сообщения, что поля формы неправильно заполнены, как-будто я отправил уже данные.
Вот так все работает:
$("#login-form").submit( function (){
$.ajax({
type: "POST",
url: 'includes/login.php',
data: $(this).serialize(),
success: function(msg) {
if(msg == 'OK') {
$('.result').remove();
$('body').append('<div class="result"><div class="alert alert-success alert-dismissible fade show" role="alert">Вход выполнен!<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div></div>');
$('.result').fadeIn(1000,'linear');
setTimeout(() => window.location.href = "/", 2500);
} else {
$('.result').remove();
$('body').append('<div class="result"><div class="alert alert-danger alert-dismissible fade show" role="alert">'+msg+'<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button></div></div>');
$('.result').fadeIn(1000,'linear');
setTimeout(() => $('.result').hide(1000), 20000);
}
}
});
return false;
})