Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Mehrfaches Submit verhindern

Empfohlene Antworten

Veröffentlicht

Hallo

Ich möchte in einer Struts-Applikation verhindern, dass ein Form doppelt oder dreifach übermittelt wird. Gibt es da eine einfach Lösung für dieses Problem?

Gruss, Remo

warum wird es überhaupt mehrfach übermittelt ?

wie sieht das script aus ?

.....

das Script sieht folgendermassen aus:

submitCount=0;

function submitter(form){

	if(submitCount<1){

		form.submit();

	}

	submitCount++;

}
der aufruf so:
<a href="JavaScript:if(validateStesBearbeitenForm(document.stesBearbeitenForm)) {document.stesBearbeitenForm.method.value='speichern';submitter(document.stesBearbeitenForm)}">

wenn man ganz schnell hintereinander auf den submit-buton klickt, wird das form 2 mal übermittelt. obwohl beim 2.mal die variable ja eigentlich schon >1 sein sollte und somit das submit nicht mehr durchgeführt werden sollte.

Als Info: Mehrach submits sind nur mit dem IE möglich, andere Browser fangen das selbst ab.

Gruß,

Markus

Ich möchte in einer Struts-Applikation verhindern, dass ein Form doppelt oder dreifach übermittelt wird.
Das hat mit Struts nix zu tun, ist pures HTML.

Ich löse sowas immer so:

<html>


  <head>

    <script type="text/javascript">

      function disableSubmitButton(theButton) {

        theButton.value = "Wird gesendet...";

        theButton.disabled = true;

      }

    </script>

  </head>

  ...

  <body>

    ...

    <input type="submit" onclick="disableSubmitButton(this)">

    ...

  </body>

</html>

Als Info: Mehrach submits sind nur mit dem IE möglich, andere Browser fangen das selbst ab.

Gruß,

Markus

Tja, leider wird für die Applikation vorausgesetzt, dass der IE verwendet werden muss.

ein Tip noch am Rande "nie" Javascript-ifs o.ä. direkt in das HTML-Element. das führt je nach Browserversion zu ganz hässlichen Ergebnissen. (IE 5.5, Netscape... z.B.)

wenn du ein IF oder mehrere Anweisungen hast, mach es auf jeden fall über eine Funktion.

Lass das Javascript weg und mach et vernünftig. ;)

Auf dem Server musst du das doppelte absenden sowieso überwachen.

z.b. laufende Nummer ins Formular und merken wenn die gespeichert wird.

Gruß Jaraz

ob javascript oder nicht hat nix damit zu tun ob es vernünftig ist :)

Wenn das JS den Button deaktiviert, dann verhindert es den Mehrfach-Submit.

Wenn dann noch das JS das Submit ausführt und nicht der Button, verhinderst du auch mehrfach-submits bei usern ohne JS (was sowieso abgefangen sein sollte, wenn du JS benutzt)

ob javascript oder nicht hat nix damit zu tun ob es vernünftig ist :)

Wenn das JS den Button deaktiviert, dann verhindert es den Mehrfach-Submit.

Wenn dann noch das JS das Submit ausführt und nicht der Button, verhinderst du auch mehrfach-submits bei usern ohne JS (was sowieso abgefangen sein sollte, wenn du JS benutzt)

user mit deaktiviertem JS koennen dann aber die form garnicht submitten !!

user mit deaktiviertem JS koennen dann aber die form garnicht submitten !!
User mit deaktiviertem JavaScript können sowieso an vielen Dingen im WWW nicht "teilhaben".

Man muss sich halt überlegen, was man will: So etwas ohne JavaScript zu machen erfordert einen höheren Aufwand, weil man sich um mehr Dinge Gedanken machen muss. Da bleibt es dann beim Kunden zu sagen, was er haben möchte, und wieviel Aufwand er für die Umsetzung investieren möchte.

Eigentlich muss man das sowieso, denn sich auf Funktionalitäten beim Client zu verlassen ist immer riskant - richtig kann es nur auf dem Server gecheckt werden. So kann ich immer noch (wenn ich es denn wollen würde) mit einem simulierten Browser hingehen, die Felder per Hand ändern, und die gesamte Logik, die beim Client liegt, zerschießen.

Hallo

ich hab's nun so gelöst:

<script language="JavaScript">

done=false;

function disableLink(todo){

	if(!done){

		done=true;

		location=todo;

	}

}

</script>


<a href="JavaScript:disableLink(document.stesSuchenForm.submit());">

Wenn ich nun mit der Maustaste schnell draufklicke, wird der submit nur einmal abgesetzt. komischerweise funktioniert das aber nicht wenn ich zweimal draufklicke mit einer maustaste auf der ein doppelklick abgelegt ist. da entwischt der submit zweimal. wieso? kann ich das irgendwie verhindern.

nun habe ich das versucht serverseitig abzufangen. ich setze ein flag in die session solange der request am laufen ist. solange der request am laufen ist, wird ein allfälliger zweiter request nicht an den requestprozessor von struts weitergegeben. das bewirkt allerdings, dass beim client eine weisse seite angezeigt wird. gibt es eine serverseitige lösung?

Gruss

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.