Как предотвратить двойную отправку формы, управляемой ajax? - PullRequest
1 голос
/ 22 февраля 2011

Я делаю первые шаги в Ajax, работая над приложением Grails.Я использую

<g:form ...>  
  <g:submitToRemote ... />
</g:form>

самым простым способом, и он отлично работал из коробки (спасибо grails!).Проблема в том, что вызову Ajax требуется около 2 секунд для возврата и обновления html (по крайней мере, в тестовой системе), и в течение этого времени пользователь может (и фактически делает это довольно часто) снова нажимать кнопку отправки.В настоящий момент это приводит к выполнению 2-го вызова, который окончательно разрушает вывод (сообщение об ошибке гласит, что нельзя передавать одни и те же данные дважды).

Каков наилучший способ предотвратить это?

Заранее спасибо за ваш вклад!

Ответы [ 2 ]

4 голосов
/ 22 февраля 2011

Лучший способ справиться с этим - отключить кнопку отправки в функции onSubmit ().Честно говоря, я не знаю, почему больше сайтов не делают этого.Я часто делаю следующий шаг, и вместо того, чтобы отключить кнопку отправки, я помещаю кнопку отправки в тег span и заменяю содержимое тега span статическим текстом «Пожалуйста, подождите ...». Таким образом, ваши пользователи получают визуальную обратную связь, которую они нажимали.кнопка и «лучшие люди работают над этим».

0 голосов
/ 14 марта 2013

Как сказал dj_segfault, вы можете сделать это.

Если вы хотите проверить это на своем контроллере, взгляните на «Обработка повторяющихся представлений форм» в официальных документах:

http://grails.org/doc/latest/guide/theWebLayer.html#formtokens

...