2013-07-23 2 views
1

Мы работаем в .net MVC и имеем форму отправки запроса по электронной почте. Пользователь находился на очень неустойчивом подключении к Интернету (на самолете) и утверждает, что, хотя нажав кнопку отправки один раз, форма была отправлена ​​6 раз, в результате чего отправлено 6 писем. Я искал вокруг, но не смог найти способ объяснить это поведение. Есть ли способ отправить опубликованную форму несколько раз из-за пятнистого соединения?Могу печатать много раз в несколько раз

ответ

1

Это действительно зависит от фактического браузера, но я еще не видел, чтобы кто-то делал что-то подобное (фактически, это было бы опасно, например, в контексте какой-либо онлайн-службы заказа).

Однако такие вещи могут произойти случайно случайно. Иногда люди не знают о нескольких кликах, потому что они не замечают, что первый щелчок запускает что-либо. Может случиться так, что браузер не сразу обнаруживает действие/активность загрузки, особенно с нестабильными подключениями. Также возможно, что из-за какой-то проблемы с аппаратным обеспечением (сломанная кнопка мыши) выполняется несколько кликов, несмотря на однократное нажатие.

Чтобы быть уверенным, я бы просто добавил минимальный код JavaScript в форму: На отправке, отключите кнопку отправки, а также избегайте дальнейших попыток отправить форму (перехватите событие onsubmit и верните true в первый раз; оттуда всегда возвращаются false).

+0

Благодарим вас за понимание. Они были в Chrome. И мы определенно поставили защиту клиентов и серверных сторон, поскольку; Я просто хотел убедиться, что знаю полную картину. – cdutcher

2

Я знаю, что опаздываю, но столкнулся с подобной проблемой, и я считаю, что проблема связана с браузером. Мы используем AJAX для отправки данных формы контроллеру, и обработка занимает много времени, так как обрабатываемые данные огромны. Браузеры, такие как Chrome, ждут определенного времени и, если они не получат ответа, предполагают, что запрос потерян, и отправить другой запрос на свой собственный, что вполне возможно на вашем конце. Обратите внимание, что в браузерах такая же проблема не возникает Firefox и IE.

Что мы сделали, чтобы избежать этой ситуации, чтобы заставить метод работать асинхронно и вернуть ответ к методу AJAX за этот промежуток времени, чтобы избежать повторного запроса запроса Chrome.

Этот link подробно объясняет эту же проблему.

Смежные вопросы