@svilkov87

Как правильно сабмитить форму после того или иного ответа с Ajax?

Всем привет!

Задача в том, чтобы при клике на кнопку, сабмитить форму ( редиректить страницу итд ) , но только после того, как ajax вернет данные.
Вот кусочек кода с комментариями:
$button.on( 'click', function(e) {
        e.preventDefault(); // предотвращаем сабмит, т.к. данные еще не получены
            $.ajax( {
                url        : '/someUrl',
                type       : 'POST',
                dataType   : 'json',
                data       :  data,
                success : function( data ) {

                    if ( data.status == 'SUCCESS' ) { // тут получили данные 
                        return true; // а тут я пытаюсь сабмитить форму
                    }
                }

            } );
    } );


Сабмит не происходит. Почему? Как правильно сделать?
Заранее спасибо!
  • Вопрос задан
  • 141 просмотр
Решения вопроса 1
usdglander
@usdglander
Yipee-ki-yay
$button.on( 'click', function(e) {
  $.ajax( {
    url        : '/someUrl',
    type       : 'POST',
    dataType   : 'json',
    data       :  data,
    success : function( data ) {
      if ( data.status == 'SUCCESS' ) { // тут получили данные 
        $(this).closest('form').submit();
      }
    }
  } );
  return false;
} );

Разве не работает?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
delphinpro
@delphinpro
frontend developer
НЕЛЬЗЯ так обрабатывать сабмит!
Юзер имеет полное право не нажимать вашу кнопку мышкой, а перевести на нее фокус табом и жмякнуть энтер. В этом случае ваш обработчик просто не сработает.
Если вы хотите предотвратить сабмит, то и отлавливать нужно сабмит.
$form.on( 'submit', function(e) {
        e.preventDefault();


По вопросу непонятно, зачем вам второй раз сабмитить форму, если вы уже отправили и получили данные?
Хотите перенаправить пользователя на другую страницу? Нет проблем:

location.href = 'http://yandex.ru';
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы