@rhamdeew
Веб-разработчик

JQuery ajax и даблклик: как пофиксить?

Всем привет!
Возникла проблема: когда пользователи кликают на кнопку 2 раза и соответственно на сервер отправляются 2 одинаковых ajax-запроса. Чтобы это дело пофиксить вижу пока два варианта:
1) Помечать как то у элемента статус выполнения (например добавить класс) и по условию проверять на его наличие чтобы второй раз не отправлялось.
2) Выставить async: false

Пока что выбрал второй вариант (код чище). Но стало интересно какие могут возникнуть подводные камни и вообще как делать правильнее с точки зрения JS одной из сильных сторон которого как раз таки является асинхронность.
  • Вопрос задан
  • 2709 просмотров
Пригласить эксперта
Ответы на вопрос 5
@artishok
кратко
Первый вариант. У кнопок добавлять атрибут disabled, а ссылки и все остальное помечать классом, например disabled. После успешного выполнения запроса убирать блокировку.
Ответ написан
Комментировать
fornit1917
@fornit1917
2-й вариант не труЪ.

Синхронные запросы подвешивают интерфейс, делают его менее отзывчивым. В некоторых случаях это незаметно. Но стоит серверу задуматься на пару секунд при обработке синхронного ajax-запроса - уже будет не очень хорошо.

В некоторых фреймворках (например ExtJS) сейчас вообще нет синхронных ajax-запросов.
Ответ написан
Sander_Li
@Sander_Li
Backend developer
Нужно еще на сервере проверять, была ли нажата кнопка
Ответ написан
Я лично использую первый вариант. В переменной храниться запрос (не весь, а управляющая команда), по удачному выполнению переменная сбрасывается. Если переменная не пуста, то запросы не отправляются.
Ответ написан
Комментировать
первый вариант правильный, вместо классов используйте data.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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