@semki096

Как отправить форму через сабмит, но перед сабмитом отправить пост запрос?

Есть форма. При нажатии на которую я попадаю на страницу платежного сервиса. Но одновременно с сабмитом надо запустить очистку корзины. Я добавил к этой форме такой скрипт
$('#formid').on('submit', function(e) {
$.ajax({
  type: 'POST',
  url: 'url'
});
e.preventDefault();
    });

То есть перед сабмитом я отправляю пост запрос на страничку со скриптом который очищает корзину. В таком виде корзина очищается, но форма не сабмитится. Убираю e.preventDefault(); - теперь естественно форма сабмитится, но аякс запрос не чистит корзину. В чем моя ошибка?
  • Вопрос задан
  • 334 просмотра
Решения вопроса 2
kosolapus
@kosolapus
Если помогло - отмечайте решением
В подходе ошибка)
2 пути, быстрый и верный. Верный - чистить корзину при получении callback от платежного сервиса с сообщением об успешном платеже (ну вот нет у меня денег на вебмани, а я 276 позиций каталога набивал полтора часа. Да я скорее клаву об стол разобью, чем повторю процедуру при ошибке на стадии оплаты)
Быстрый - кидать пост по клику на кнопку, которая должна творить сабмит. Тут как раз надо будет preventDefault - чтоб не отправилось, $.post() - чтоб ушло и $("form").submit(); - ручками отправить форму
Ответ написан
@r_zaycev
Что-то типа такого можно сделать:

$('#formid').on('submit', function(e) {
var self = this;
if(!self.hasOwnProperty('xajaxsubmitted')){
e.preventDefault();
$.ajax({
  type: 'POST',
  url: 'url',
  success : function(){
    self.xajaxsubmitted = true;
    $(self).submit();
  }
  });
}
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
REZ1DENT3
@REZ1DENT3
web-developer
По моему корзину лучше хранить не на сервере, а на клиенте(например в куках). Проблема сразу же пропадет сама собой.

А вот мысль по текущей задаче:
e.preventDefault();
         return true; // добавить return, как подтверждение для отправки формы
    });


и в options $.ajax добавить async: false
Ответ написан
Ваш ответ на вопрос

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

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