Двойное / повторное нажатие на кнопку HTML - PullRequest
0 голосов
/ 27 июля 2011

Наше приложение использует ASP.net MVC, и у нас есть вопрос о том, что происходит в следующем сценарии.

У нас есть «кнопка», которая делает платеж, и после совершения платежа у нас есть переменная сеансакоторый отмечает "PaymentSubmitted" в True.Эта переменная сеанса будет использоваться для выполнения различных действий в зависимости от ее значения.

Теперь я хотел бы получить ваши данные при принятии решения о том, что произойдет, если пользователь дважды нажмет на эту кнопку.

Будет ли второй запрос (генерируемый после второго нажатия кнопки «Готово») ждать выполнения первого запроса?Или же второй запрос будет выполняться, не беспокоясь о том, где находится первый запрос.

примечание: мы воздерживаемся от использования любых сценариев на стороне клиента.

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Я предполагаю, что нажатие кнопки - это «отправить» в форме.

После нажатия кнопки будет опубликован второй запрос. Представьте, что вы нажимаете обновление в браузере на любой странице 20 раз, эти 20 запросов будут отправлены на ваш веб-сервер и будут обрабатываться в порядке их получения.

Вы должны иметь возможность проверить переменную сеанса при последующем щелчке, если вы установили ее достаточно рано - но это определенно небезопасно.

Лучшим подходом будет использование JavaScript или публикация на другой странице, чтобы кнопка не могла быть повторно нажата при получении платежа.

0 голосов
/ 28 июля 2011

Можно ли было бы идентифицировать операцию (покупку товара или что-то еще оплачиваемое)?В этом случае вы можете пометить операцию как «выполняющуюся» после первого щелчка.Когда ваш сервер получает петицию, в первую очередь следует проверить состояние операции, если сервер «в процессе» не запускает другую транзакцию.

В любом случае хорошо иметь некоторый клиентфункция боковой блокировки (отключение кнопки, модальное окно с типичным сообщением ожидания и т. д.), в основном для пользователей, поэтому у них есть мнение, что «что-то происходит».Но, конечно, не ретрансляция только в этой функции блокировки, потому что все, что на стороне клиента, подвержено изменению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...