Показать сообщение отдельно
  #1 (permalink)  
Старый 13.02.2020, 10:57
Аспирант
Отправить личное сообщение для Torch`Ok Посмотреть профиль Найти все сообщения от Torch`Ok
 
Регистрация: 12.09.2012
Сообщений: 43

Функция отправки запросов Ajax
Не могу понять в чем проблема. При обновлении страницы функция срабатывает сразу, а нужно чтоб при клике на кнопку отправить.
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">&times;</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">&times;</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">&times;</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">&times;</span></button></div></div>');
                    $('.result').fadeIn(1000,'linear');
                    setTimeout(() => $('.result').hide(1000), 20000);
                }
            }
        });
        return false;
    })
Ответить с цитированием