Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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;
    })
Ответить с цитированием
  #2 (permalink)  
Старый 13.02.2020, 11:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,144

Torch`Ok,
$("#login-form").submit(function (){
sendPostQuery( $(this).serialize(), 'includes/login.php', 'Вход выполнен!', 'index')} )
Ответить с цитированием
  #3 (permalink)  
Старый 13.02.2020, 11:48
Аспирант
Отправить личное сообщение для Torch`Ok Посмотреть профиль Найти все сообщения от Torch`Ok
 
Регистрация: 12.09.2012
Сообщений: 43

Спасибо. Так работает. Только теперь как-то неадекватно отрабатывает setTimeout
setTimeout(() => $('.result').hide(1000), 20000);

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

Вернее обновляет страницу в случае ошибки. Хз что происходит. Буду разбираться
Ответить с цитированием
  #5 (permalink)  
Старый 13.02.2020, 12:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,144

Torch`Ok,
могу только гадать...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как настроить отладку ajax запросов на сервере в intellij idea biilsun AJAX и COMET 1 04.04.2018 10:20
Как можно получить результат работы php скрипта после отправки данных через ajax nina_ jQuery 5 14.11.2016 14:17
Как дождаться выполнения нескольких AJAX запросов SergeyKonstantinov AJAX и COMET 2 31.10.2016 15:49
Последовательное выполнение Ajax запросов. jgunchenko AJAX и COMET 1 07.05.2014 12:50
AJAX функция для новых html-элементов broadcast77 AJAX и COMET 25 03.03.2014 14:01