Formular wird bei reload() erneut abgeschickt
striezel
- php
0 Andreas0 Benjamin Wilfing0 striezel0 Mel0 Benjamin Wilfing
0 striezel
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
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
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
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
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
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
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
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
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
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
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