chris99xx: location.replace()

Hallo,
zum ersten möchte ich sagen das ich jetzt 7 Stunden im Internet gesucht habe und nicht wirklich findig geworden bin, da ich PHP Programmier bin und sich meine Arbeitstätigkeit normalerweise auch nur in dem Umfeld befindet, habe ich nicht sehr viel Ahnung von js und leider auch nicht die Zeit.

Mein Problem: ich habe eine bestehende PHP-Lösung für einen Kunden neu programmiert. Jetzt möchte der Kunde, dass der Zurückbutton im Browser nicht verwendet werden soll, aber nicht überall. Ich habe in Erfahrung gebracht dass, dafür die Funktion: location.replace() zuständig ist, die den letzten history Eintrag überschreibt.

<form name="form_79_art_2" method="POST" onsubmit="return false">
 <fieldset title="Demografische Daten" id="fs_79">
 <legend id="le_79">Demografische Daten</legend>
  <!-- unbekannte Felder -->
  <input type="submit" onclick="location.replace('formular/list.phtml')" name="submit_79" title="Daten speichern" value="weiter" class="submit_79" />
 </fieldset>
</form>

Leider werden durch das onsubmit="return false" keine Werte per POST weitergereicht, wie kann ich das ändern oder gibt es noch andere Möglichkeiten!

Vielen Dank im Vorraus

Hier meine Programmlogik für die betreffenden Formulare, falls diese wichtig sein sollte.

1. klasse xy ruft die seite auf
2. ausfüllen oder nicht
3. senden an formular/list.phtml (rewrite an modul: formular und action: list in Klasse xY)
4a. nicht ausgefüllt: altes template laden mit $_POST und diverse
4b. ausgefüllt: neues template oder altes mit neuen feldern
4c. ende max(felder) erreicht auswertung: template, diverse

  1. ich nochmal,
    ich habe ein bissle weitergesucht und bin auf die Funktion "document.forms['formular'].submit();"

    könnte mir jemand sagen wie ich diese beiden Funktionen zeitgleich verwenden kann?
    Vielen Dank

    1. Hi,

      ich habe ein bissle weitergesucht und bin auf die Funktion "document.forms['formular'].submit();"

      Das ist das gleiche wie das "stinknormale" Abschicken eines Formulars - nur ueber JavaScript ausgeloest. (Und es erzeugt natuerlich ebenso einen history-Eintrag.)

      könnte mir jemand sagen wie ich diese beiden Funktionen zeitgleich verwenden kann?

      Gar nicht.
      Entweder - oder.

      MfG ChrisB

  2. Hi,

    zum ersten möchte ich sagen das ich jetzt 7 Stunden im Internet gesucht habe und nicht wirklich findig geworden bin,

    Dann hast du schlecht gesucht.

    Hier gab's erst letztens eine recht ausfuehrliche Diskussion zum Thema.

    <form name="form_79_art_2" method="POST" onsubmit="return false">
      <input type="submit" onclick="location.replace('formular/list.phtml')"

    Leider werden durch das onsubmit="return false" keine Werte per POST weitergereicht,

    Dadurch wir das komplette Absenden des Formulars verhindert, ja.
    Und das location.replace auf dem submit-Button loest natuerlich nur einen GET-Request aus, und diesen ohne jegliche Uebergabe weiterer Parameter.

    wie kann ich das ändern oder gibt es noch andere Möglichkeiten!

    Wenn GET statt POST eine denkbare Alternative waere, dann koenntest du dir den entsprechenden Query-String aus den Formularfeldinhalten selber zusammenbasteln, und beim replace verwenden.
    Wenn's POST bleiben soll, kaeme noch AJAX als zu missbrauchende Technik in Frage.

    Beides "funzt" natuerlich nicht fuer Dateiuploads.

    Hier meine Programmlogik für die betreffenden Formulare, falls diese wichtig sein sollte.

    1. klasse xy ruft die seite auf
    2. ausfüllen oder nicht
    3. senden an formular/list.phtml (rewrite an modul: formular und action: list in Klasse xY)
      4a. nicht ausgefüllt: altes template laden mit $_POST und diverse
      4b. ausgefüllt: neues template oder altes mit neuen feldern
      4c. ende max(felder) erreicht auswertung: template, diverse

    In wie fern die Benutzung der Zurueck-Funktionalitaet des Browsers dabei "schaedlich" sein koennte, erschliesst sich mir zumindest daraus noch nicht.

    MfG ChrisB

    1. Hier gab's erst letztens eine recht ausfuehrliche Diskussion zum Thema.

      Vielen Dank für Deine Infos, ich habe mir die Diskussion durchgelesen. (sorry das ich sie nicht gefunden habe)
      Ich werde sie weiterleiten und davon abraten.