@Alk90
php, mysql, jquery, css, html, api

Как выловить ошибку после отправки $.post?

Всем привет! Использую примерно такой код при отправке формы на сервер:
$('form[name=add]').on('submit', function(event){
			event.preventDefault();
			var th = $(this);
			ShowAnim(th.find('button[type=submit]')); // на кнопке отображает анимацию
			th.find('button[type=submit]').attr('disabled', 'disabled'); // делает кнопку не активной
			var data = th.serialize();
			$.post('/ajax/add.php',{data: data},function(d){
				HideAnim(th.find('button[type=submit]'));
				th.find('button[type=submit]').removeAttr('disabled');
				ParseResp(d, 'form[name=add]'); // исходя из ответа сервера определяет что делать с формой
			});
		});


Если все успешно выполняется, то никаких проблем. Но иногда, очень редко, на кнопке появляется анимация, она становится не активной и все... больше никаких действий с ней нельзя сделать. Если в инспекторе кода убрать "disabled", то можно снова нажать на кнопку и все становится нормально (но пользователь же этого длать не будет, у него заполненная форма пропадет после того как он обновит страницу).

Я не могу определить причину, т.к. ситуация очень редкая, а если вынести этот код за пределы $.post:
HideAnim(th.find('button[type=submit]'));
th.find('button[type=submit]').removeAttr('disabled');

Кнопка становится активной до того как скрипт дождется ответа от сервера, в результате чего пользователи отправляют две одинаковые формы.
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
t-alexashka
@t-alexashka
Сразу пишу legacy код
$.post('/ajax/add.php', { data: data })
.success(function (r) {
	// все ок
})
.fail(function (r) { 
	// все плохо
	console.log(r.responseText);
})
.always(function (r) {
	// выполнится при любом завершении
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Dev tools -> network - и смотреть что происходит с запросом.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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