striezel: Formular wird bei reload() erneut abgeschickt

Guuuuuuuten Morgen, Forum!

Ich habe folgendes Prob:
In einer Auswahlliste kann man Werte auswählen, die nach abschicken des Formulars durch PHP aus einer Textdatei gelöscht werden. Nach dem Löschvorgang lade ich die Seite per reload() erneut - der gelöschte Wert soll logischerweise nicht mehr in der Liste auftauchen. Das hat leider zufolge, dass das Formular erneut abgeschickt und versucht wird, den Eintrag nochmal zu löschen (klappt nicht ;-)). Kann man den reload() irgendwie umbauen, dass die blanke Datei ohne ...?variable=wert geladen wird? Im Archiv hab ich nix zu meinem Problem gefunden.

Vielen Dank im Voraus

Gruss striezel

  1. Hi Striezel,

    vielleicht klappt das so:

    if(index(document.location.href,'?')!=-1){
      document.location.href=substr(document.location.href,0,index(document.location.href,'?'));
    }else{
      document.location.href=document.location.href+"?";
    }

    Das "?", welches ich nach "else" an den String anhänge soll lediglich bewirken, dass die Seite nicht aus dem Cache geladen wird.

    Ciao
    Andreas

    1. Hi Striezel,

      Hi Andreas!

      vielleicht klappt das so:

      if(index(document.location.href,'?')!=-1){
        document.location.href=substr(document.location.href,0,index(document.location.href,'?'));
      }else{
        document.location.href=document.location.href+"?";
      }

      Ich probiers mal aus.

      Das "?", welches ich nach "else" an den String anhänge soll lediglich bewirken, dass die Seite nicht aus dem Cache geladen wird.

      Ok. Danke schonmal

      Ciao
      Andreas

      Tschö striezel

      1. Hi nochmal,

        es kann sein, dass die Funktion "substr()" nicht den Wert zurückliefert, den ich eigentlich wollte - hab' das Beispiel mal eben aus dem FF geschrieben ohne drüber nachuzudenken. Aber im Prinzip funktioniert's.

        Ciao
        Andreas

        1. Hi nochmal,

          Hi

          es kann sein, dass die Funktion "substr()" nicht den Wert zurückliefert, den ich eigentlich wollte - hab' das Beispiel mal eben aus dem FF geschrieben ohne drüber nachuzudenken. Aber im Prinzip funktioniert's.

          Klar. Ich muss es sowieso etwas umbauen.

          Ciao
          Andreas

          Ciao striezel

          1. Hi,

            ich kann's nicht übers Herz bringen... So schlechten JS Code habe ich noch nie geschrieben... Das war irgendwie JS mit Perl vermischt. Aber so funktioniert's:

            <script language="javascript">
            function load_again(){
              if(document.location.href.indexOf('?')!=-1){
            alert(document.location.href.substring(0,document.location.href.indexOf('?')));
                document.location.href=document.location.href.substring(0,document.location.href.indexOf('?'));
              }else{
            alert(document.location.href+"?");
                document.location.href=document.location.href+"?";
              }
            }
            </script>
            <p><a href="javascript:load_again()">Neu laden</a></p>

            Ciao
            Andreas

  2. Guten Morgen striezel,

    Das hat leider zufolge, dass das Formular erneut abgeschickt und versucht wird, den Eintrag nochmal zu löschen (klappt nicht ;-)).

    Ja, ich stand auch schon mal vor dem Problem...

    Kann man den reload() irgendwie umbauen, dass die blanke Datei ohne ...?variable=wert geladen wird?

    Ja, indem du PHP einen HTTP-Header schicken lässt, und zwar folgenden:

    header("Location: http://www.deine-seite.de/deine-datei.php");

    Dadurch wird dein Browser automatisch zur angegebenen Adresse redirected, ohne daß die Daten erneut gesendet werden.

    Grüße aus Darmstadt,
    Benjamin

    1. Guten Morgen striezel,

      Guten Morgen Benjamin

      Das hat leider zufolge, dass das Formular erneut abgeschickt und versucht wird, den Eintrag nochmal zu löschen (klappt nicht ;-)).

      Ja, ich stand auch schon mal vor dem Problem...

      Gut, dass es nicht mir alleine so geht ;-)

      Kann man den reload() irgendwie umbauen, dass die blanke Datei ohne ...?variable=wert geladen wird?

      Ja, indem du PHP einen HTTP-Header schicken lässt, und zwar folgenden:

      header("Location: http://www.deine-seite.de/deine-datei.php");

      Wo muss das im Quelltext stehen? Wenn es am Anfang vom Script steht hab ich bisher nur ein bisschen Traffic durch eine Endlosschleife erzeugt.

      Dadurch wird dein Browser automatisch zur angegebenen Adresse redirected, ohne daß die Daten erneut gesendet werden.

      Coole Idee!

      Grüße aus Darmstadt,
      Benjamin

      Grüße aus Fulda,

      striezel

      1. Hi,

        header("Location: http://www.deine-seite.de/deine-datei.php");

        Wo muss das im Quelltext stehen? Wenn es am Anfang vom Script steht hab ich bisher nur ein bisschen Traffic durch eine Endlosschleife erzeugt.

        Das steht dort wo bisher Dein reload() steht, also ich denke am Ende der If-schleife, die bei Submit durchlaufen wird.
        Wichtig! -nach dieser Zeile header(...) muss ein

        exit();

        stehen.

        Gruss, Mel

      2. Hallo nochmal,

        Wo muss das im Quelltext stehen? Wenn es am Anfang vom Script steht hab ich bisher nur ein bisschen Traffic durch eine Endlosschleife erzeugt.

        Das ist im Prinzip egal, wo im Quelltext es steht. Was wichtig ist, es darf noch keine Ausgabe (echo) erfolgt sein und es dürfen noch keine anderen Header ausgegeben worden sein. Unter Beachtung dieser Regeln darfst du das an jede beliebige Stelle im Quelltext schreiben.

        Grüße aus Darmstadt,
        Benjamin

  3. Hallo, Andreas und Benjamin!

    QL!!! Habs mit eurer Hilfe hingekriegt. Ich hab da so ne Mischung aus beiden Varianten eingebaut und jetzt funzzt es!

    Also, vielen Dank noch mal!

    Gruss striezel