In den alten Tagen von CGI hatten wir viele Formen, die verschiedene Backend-Aktionen auslösten. Wie Textbenachrichtigungen an Gruppen, Druckaufträge, Datenerfassung usw.
Wenn sich der Benutzer auf einer Seite befand, auf der stand: "Bitte warten Sie ... Führen Sie einen RIESIGEN Job aus, der einige Zeit dauern kann." Sie würden eher REFRESH treffen und das wäre SCHLECHT!
WARUM? Weil es langsamere Jobs auslösen und schließlich das Ganze zum Erliegen bringen würde.
Die Lösung? Erlaube ihnen, ihre Form zu machen. Wenn sie ihr Formular abschicken ... Starten Sie Ihren Job und leiten Sie sie auf eine andere Seite weiter, auf der sie aufgefordert werden, zu warten.
Wo die Seite in der Mitte tatsächlich die Formulardaten enthielt, die zum Starten des Jobs benötigt wurden. Die WAIT-Seite enthält jedoch eine Zerstörung des Javascript-Verlaufs. Sie können diese Warteseite also nach Belieben neu laden, und der ursprüngliche Job wird niemals im Hintergrund gestartet, da diese WAIT-Seite nur die Formulardaten enthält, die für WAIT selbst erforderlich sind.
Hoffe das macht Sinn.
Die Funktion zum Zerstören des Verlaufs verhinderte auch, dass sie auf ZURÜCK klicken und dann ebenfalls aktualisieren konnten.
Es war sehr nahtlos und funktionierte viele Jahre lang großartig, bis der gemeinnützige Verein aufgelöst wurde.
Beispiel: FORMULAREINGABE - Sammeln Sie alle Informationen. Wenn diese gesendet werden, wird Ihr Backend-Job ausgelöst.
ANTWORT vom Formulareintrag - Gibt HTML zurück, das eine Umleitung zu Ihrer statischen Warteseite und / oder POST / GET zu einem anderen Formular (der WAIT-Seite) durchführt.
WARTESEITE - Enthält nur FORM-Daten zur Warteseite sowie Javascript, um den neuesten Verlauf zu zerstören. Wie (-1 ODER -2), um nur die neuesten Seiten zu zerstören, aber sie können trotzdem zu ihrer ursprünglichen FORMULAR-Eintragsseite zurückkehren.
Sobald sie sich auf Ihrer WAIT-Seite befinden, können sie so oft auf REFRESH klicken, wie sie möchten, und es wird niemals der ursprüngliche FORM-Job im Backend erzeugt. Stattdessen sollte Ihre WAIT-Seite eine zeitgesteuerte META-Aktualisierung selbst enthalten, damit sie immer den Status ihres Jobs überprüfen kann. Wenn ihr Auftrag abgeschlossen ist, werden sie von der Warteseite zu einem beliebigen Ort weitergeleitet.
Wenn sie manuell REFRESHEN ... Sie fügen dort einfach eine weitere Überprüfung ihres Jobstatus hinzu.
Hoffentlich hilft das. Viel Glück.