/ / Jak zapobiec dwukrotnemu przesłaniu formularza sterowanego ajaxem? - ajax, formularze, grails, submit, double-submit-problem

Jak zapobiec dwukrotnemu przesłaniu formularza sterowanego ajaxem? - ajax, formularze, grails, submit, double-submit-problem

Robię pierwsze kroki z Ajaxem podczas pracy nad aplikacją Grails. ja używam

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

w najprostszy sposób i sprawdziło się świetniepudełko (dzięki Gratulacje!). Problem polega na tym, że połączenie Ajax potrzebuje około 2 sekund na zwrócenie i aktualizację html (przynajmniej w systemie testowym) iw tym czasie użytkownik może (i faktycznie dość często) ponownie nacisnąć przycisk wysyłania. W chwili obecnej powoduje to drugie wywołanie, które ostatecznie niszczy dane wyjściowe (komunikat o błędzie mówi, że nie można dwukrotnie przesłać tych samych danych).

Jaki jest najlepszy sposób, aby temu zapobiec?

Z góry dziękuję za Twój wkład!

Odpowiedzi:

4 dla odpowiedzi № 1

Najlepszym sposobem na poradzenie sobie z tym jest wyłącz przycisk przesyłania w swojej funkcji onSubmit (). Szczerze mówiąc, nie wiem, dlaczego więcej stron nie robi tego. Często robię kolejny krok i zamiast wyłączać przycisk przesyłania, umieszczam przycisk przesyłania w znaczniku zakresu i zastępuję zawartość znacznika span statycznym tekstem "Proszę czekać ..." W ten sposób użytkownicy otrzymają wizualną informację zwrotną, którą nacisnęli przycisk i "najlepsi mężczyźni nad nim pracują".


0 dla odpowiedzi nr 2

Jak powiedział dj_segfault, możesz to zrobić.

Jeśli chcesz sprawdzić to w kontrolerze, zajrzyj do sekcji "Obsługa duplikatów zgłoszeń" w oficjalnych dokumentach:

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