Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Nach Formular senden, Textfeld leeren, funktioniert nicht! [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Nach Formular senden, Textfeld leeren, funktioniert nicht!


 
KarlKoks
09-05-2009, 14:01 
 
Guten Morgen,
ich stehe mal weider vor einem Problem und find keine Lösung.
Ich habe eine Textfeld und einen button zum absenden, das ganze wird an ein Iframe darüber gesendet. Jetzt möchte ich nach erfolgreichem Absenden das Textfeld leeren. So wie bei einem Chat.

Ich rufe also eine Funktion auf die das Formular senden soll, und danach die Zeile löschen soll. Die Zeile wird auch gelöscht, aber das Formular leider nicht abgesendet... was mach ich Falsch?

Formular:

echo "<form name=\"formname\" action=\"datei.php?gid=$gid&autorefresh=$_GET[autorefresh]&".SID\" target=\"iframe\" style=\"display:inline;\" method=\"POST\" onSubmit=\"return sendForm(this);\">\n";

// Funktion:
function sendForm(thisForm)
{
thisForm.submit();
thisForm.eingabe.value = "";
return false;
}

Gruß

 
onemorenerd
09-05-2009, 14:45 
 
Dein echo-String ist kaputt. Pack das mal in PHP-Tags, dann wirds bunt und du siehst den Fehler. ;)

 
KarlKoks
09-05-2009, 14:50 
 
Hi, ich glaub du meinst " ... autorefresh]&".SID\" target ...", richtig?
nein im Script sollte der nicht defekt sein, ich hatte dahinter beim einfügen hier nur den anker rausgenommen im Script ansich, ist es folgendermaßen:

echo "<form name=\"shoutboxformular\" action=\"gruppen_shoutbox.php?gid=$gid&autorefresh=$_GET[autorefresh]&".SID.
"#anker_shoutbox\" target=\"shoutbox\" style=\"display:inline;\" method=\"POST\" onSubmit=\"return sendForm(this);\">\n";
oder ist da doch was falsches drin? Ich erhalte auf jeden Fall keinen PHP Error.

Gruß

 
onemorenerd
09-05-2009, 15:20 
 
Jetzt passt es.

Was hast du unternommen, um den Fehler zu finden? Wie wäre es mit einem alert(thisForm.eingabe.value) nach dem thisForm.submit()?
Wenn das nicht den Text deines Felds liefert, dann ist eingabe wohl nicht das was du denkst.

 
KarlKoks
11-05-2009, 10:50 
 
Guten Morgen, ich habe das mal Ausprobiert.
Der ALERT gibt genau das aus was in dem Textfeld eingegeben wurde.
Danach leert er das feld, sendet das Formular aber nicht ab!

so hatte ich es:
function sendForm(thisForm)
{
thisForm.submit();
alert(thisForm.eingabe.value);
thisForm.eingabe.value = "";
return false;
}

wie gesagt bei <form action steht eine PHP datei (im selbigen Verzeichnis) drin mit angehängten Variablen, wie im ersten Beitrag sichtbar.

Dann habe ich mal folgendes probiert:

Wenn ich ausklammer das er das feld danach löschen soll geht es immer noch nicht. Schreibe ich nun noch mit rein:
document.shoutboxformular.shoutbox.location.href = 'http://www.URL.de';
und wähle dabei irgendeine URL, selbst eine die garnichts mit meinem Script zu tun hat, dann ruft er das richtige script auf welches in <form action steht. (Bei ausgeklammerten FELD LEEREN). Sollte das feld leeren eingeschaltet sein, funktioniert auch dies nicht!

Das verstehe ich nicht..
Das kann doch nicht abhängig sein davon..

Gruß

 
onemorenerd
11-05-2009, 11:33 
 
Gib mal bitte den Link zur Seite.

 
asp2php
11-05-2009, 11:44 
 
KarlKoks, bitte Forum-PHP-Tag http://www.php-resource.de/forum/images/editor/php.giffür Code verwenden. Danke.

 
KarlKoks
11-05-2009, 12:04 
 
Ich hab dir ne PN gesendet!

 
onemorenerd
11-05-2009, 14:15 
 
Du kannst PNs schicken? Vor dem Update ging das nicht ...

 
asp2php
11-05-2009, 14:25 
 
ich habe aber keins bekommen :dontknow: ... oder war ich nicht gemeint :D

 
onemorenerd
11-05-2009, 14:30 
 
Ich habe auch keine bekommen.

 
KarlKoks
11-05-2009, 15:06 
 
Hallo.
Die Nachricht war eigentlich für onemorenerd bestimmt..
@asp2php, du hast mich ja nur auf einen Fehler in meiner Beitragsstellung hingewiesen :)

@onemorenerd:
Wenn ich dein Profil anklicke kann ich dir da ne Profilnachricht schreiben, und das habe ich getan.

In der Nachricht habe ich gefragt ob man dich auch per ICQ oder E-Mail erreich kann. Den Link kann ich dir leider nicht senden, da dieser, wie das Gesamtescript nicht veröffentlicht werden kann. Das Gesamte Script ist sehr umfangreich. Ich würde dir aber den Quellcode senden der mit dem Thema zu tun hat.

Gruß

 
onemorenerd
11-05-2009, 15:50 
 
Ich habe keine PN bekommen. Du kannst mich nicht per ICQ oder Email erreichen, ich mach hier keinen Privatsupport. Wenn die Sachen so geheim sind, dann solltest du sie mir sowieso nicht schicken - kennst mich doch gar nicht.

Ich hätte das Formular gern in Aktion gesehen, muss aber auch nicht sein. Das packen wir auch so ...

Statt in der JS-Funktion submit() aufzurufen, kannst du am Ende auch einfach true zurückgeben. Versuch das mal und wenn es nicht klappt, beobachte den Scriptablauf in Firebug. Irgendwas passiert bevor oder nachdem du den Value setzt. Gesetzt wird er ja, sonst hättest du eine Fehlermeldung bekommen.

 
KarlKoks
11-05-2009, 17:11 
 
Hi, Ich hätte dir auch nicht den kompletten code gesendet sondern nur den, der zu dem Thema gehört.

Ich habe thisForm.submit(); rausgenommen und return auf true; gesetzt, es geht immer noch nicht!

folgenden Code hatte ich:


function sendForm(thisForm)
{
thisForm.eingabe.value = "";
return true;
}


Firebug hab ich installiert, jedoch steige ich da nicht so recht durch ..

 
wahsaga
11-05-2009, 17:31 
 
Den Link kann ich dir leider nicht senden, da dieser, wie das Gesamtescript nicht veröffentlicht werden kann. Das Gesamte Script ist sehr umfangreich.
Dann erstelle eine minimale Testseite, auf der das Problem mit so wenig Code wie möglich nachvollziehbar ist.

 
KarlKoks
11-05-2009, 18:19 
 
Ja, hätt ich mal gleich machen sollen *g* sorry..

also hier befindet sich eine vereinfachte Form, die den selben Fehler aufweist:
ö (http://www.cashbombe.de/test/)

Also der Inhalt über der eingabezeile wird in einem IFRAME geladen,
die Datei die darin geladen wird beinhaltet folgenden Code:


<?

$eingabe=$_POST['eingabe'];

if($eingabe)
{
echo "Deine Eingabe:". $eingabe;
} else {
echo "Keine Angabe gemacht!";
}

?>


Wenn ich nun die Zeile die den Inhalt des Feldes leert ausklammer, funktioniert es.

Gruß

 
wahsaga
11-05-2009, 18:40 
 
Ja Hallo, du leerst das Eingabefeld, bevor das Formular versendet wird - und wunderst dich dann, dass beim anschliessenden Versenden des Formulars kein Wert mehr übertragen wird ...?

 
KarlKoks
11-05-2009, 18:46 
 
Dann schau dir mal den ersten Beitrag von mir in diesem Thema an!
vorher enthielt die funktion auch noch thisForm.submit();

was für mich soviel bedeutet wie absenden, aber auch das funktioniert nicht!

Und in einem der letzten beiträge wurde mir geraten den teil zu entfernen und return auf true zu setzen. Auch das klappt nicht!

Wann und wie das abgesendet wird und wie ich es schreiben muss damit es klappt weiss ich nicht.. das versuche ich ja hier zu erfahren.
Leider habe ich auch nicht alzuviel Erfahrung mit JavaScript.

 
wahsaga
11-05-2009, 18:58 
 
vorher enthielt die funktion auch noch thisForm.submit();
Ja - und direkt danach das Leeren des Formularfeldes.

Mit dem Aufruf von submit() verlässt du den "Wirkungsbereich" von JavaScript, und gibst dem Browser die Anweisung, "verschick mal das Formular da". Dazu braucht der auch erst mal ein bisschen Zeit.
Leider läuft die Abarbeitung deines JavaScriptes direkt weiter, das Formularfeld wird geleert - aber noch bevor der Browser überhaupt damit fertig ist, das Formular auszuwerten und zu verschicken.


Man könnte das Löschen des Feldes mit einem Timeout versehen - aber das halte ich auch nicht für besonders zuverlässig.
Das günstigste wäre es wohl, das Leeren des Feldes aus dem Antwortdokument heraus zu machen (frame-übergreifend). Denn wenn das geladen worden ist, dann ist das Formular wohl definitiv bereits erfolgreich versendet worden.

 
KarlKoks
11-05-2009, 19:14 
 
Vielen Dank. War Super erklärt!
Hab es jetzt auch hinbekommen.
Rufe in der Datei im IFRAME bei Erfolg einfach folgendes auf:


echo "<script type=\"TEXT\JAVASCRIPT\">\n";
echo "<!--\n";
echo "parent.document.shoutboxformular.eingabe.value = \"\";\n";
echo "-->\n";
echo "</script>\n";


Habs auch auf der Beispielseite angewendet, werde es nun in mein Script einsetzen, da wird es dann sicherlich auch funktionieren.

Also Vielen Dank nochmal
Und noch einen schönen Abend

Gruß

 
KarlKoks
11-05-2009, 19:27 
 
Muss mich leider nochmal zu dem Thema melden.
Meine Lösung funktioniert nur im IE..
Im Opera und FF nicht.

noch ne idee ? oder ne Lösung?

 
asp2php
11-05-2009, 21:47 
 
Was funktioniert nicht? Das Senden oder Löschen?

btw.: schaue dir die Zeile an: echo "<script type=\"TEXT\JAVASCRIPT\">\n"; ... was fällt dir auf?

 
KarlKoks
11-05-2009, 22:35 
 
Ach ja scheisse, son blöder flüchtigkeitsfehler wieder... Es funktioniert nun auf jeden Fall..
Danke für deinen Hinweis.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:48 Uhr.