Lassen sich Daten aus <input> über JS Funktion an PHP senden?
Marcel
- javascript
Hallo,
ich hoffe, ich konnte mit dem Thema halbwegs das beschreiben, was ich vor habe bzw. in welcher Richtung ich Hilfe benötige. Also, was ich habe ist eine Reihe von input Feldern, deren "value"s an eine Javascript-Funktion gesendet werden. Von dieser sollen die Daten zunächst bearbeitet und anschließend an PHP übergeben werden. Kurz gesagt, sieht das so aus:
(Ich hoffe, ich bekomme die Formatierung halbwegs hin. Hab keine Ahnung, wie das hier genau geht.)
<html>
<head>
<title>foobar</title>
<script type="text/javascript" language="javascript">
function ZeigeAn(Wert) {
if (Wert=="foofoo") { // >>Wert<< kann nur "foofoo"
Wert=Wert + "erhält hier einen anderen Wert";
} else { // oder "barbar" sein.
Wert=Wert + "erhält hier einen ganz anderen Wert";
}
<!--
Hier fehlt mir nun der entscheidende Schritt um "Wert" geschickt an PHP zu übergeben.
//-->
document.MeinFormular.submit();
return;
}
</script>
</head>
<body>
<form name="MeinFormular">
<input type="button" name="foo" value="foofoo" onClick="javascript:ZeigeAn(this.value);" />
<input type="button" name="bar" value="barbar" onClick="javascript:ZeigeAn(this.value);" />
</form>
</body>
</html>
Natürlich könnte ich auch statt type="button" direkt einen type="submit" nehmen und dann mit PHP ein Auge auf $foo haben. Allerdings komme ich an der ein oder anderen Stelle nichtmehr um ein type="button" onClick="javascript:function();" herum, da die "value"s nicht einfach übergeben werden können sondern zunächst von der Javscriptfunktion weiterverarbeitet werden, bevor sie mit document.submit(); an PHP weitergeschickt werden. Daher brauche ich eine Lösung, die auf type="submit" verzichten kann. Ich hoffe, diese gibt es und Jemand hier kennt sie.
Gruß,
Marcel
Als kleinen Zusatz hätte ich ein Workaround anzubieten, was ich aber nicht wirklich verwenden möchte:
<html>
[...]
function ZeigeAn(Wert) {
[...]
document.WorkAround.WrkArnd.value=BearbeiteterWert;
document.WorkAround.submit();
return
}
<form name="WorkAround" action="AbschickenAnDieWoAuchImmer" method="post">
<input type="hidden" name="WrkArnd" value="">
</form>
[...]
</html>
Dieses funktioniert natürlich, aber ob das nun unbedingt der richtige Weg ist, das ursprüngliche Problem zu lösen, wage ich zu bezweifeln. Für Ratschläge bin ich also weiterhin ganz Ohr.
Gruß,
Marcel
hi,
Natürlich könnte ich auch statt type="button" direkt einen type="submit" nehmen und dann mit PHP ein Auge auf $foo haben. Allerdings komme ich an der ein oder anderen Stelle nichtmehr um ein type="button" onClick="javascript:function();" herum, da die "value"s nicht einfach übergeben werden können sondern zunächst von der Javscriptfunktion weiterverarbeitet werden, bevor sie mit document.submit(); an PHP weitergeschickt werden.
Da könntest du doch genausogut onSubmit benutzen - und dann die Werte somit vor dem Abschicken verändern. Ob du sie in versteckte Felder schreibst, oder den Wert im den sichtbaren Input-Feldern verändern magst, bleibt dir überlassen.
gruß,
wahsaga
Hi Marcel,
Daher brauche ich eine Lösung, die auf type="submit" verzichten kann.
Wahsaga hat dir den entsprechenden Tip dazu schon gegeben - per onSubmit die Funktion zur Datenmanipulation aufrufen, die Funktion muss dann einfach nur mit return true enden.
Aber ich frage mich, ob denn diese Bearbeitung mit Javascript überhaupt notwendig ist - diese Abfragen könntest du doch genauso gut serverseitig mit PHP machen (in deinem Beispiel passiert ja nichts besonderes). Das hätte den Vorteil, dass man nicht von Javascript abhängig wäre.
MfG, Dennis.
Hallo Marcel,
irgendwie verstehe ich dein Problem noch nicht so ganz. Meiner Meinung nach hast du es doch bereits (fast?) gelöst.
Du verwendest statt buttons mit type="submit" eben buttons mit type="button" und prüfst erst in Javascript, ob die Daten korrekt sind, bevor du sie dann per submit() an das Zielscript weitergibst.
Alles was dir noch fehlt ist meiner Meinung nach an folgender Stelle
<form name="MeinFormular">
ein action Attribut (Meines Erachtens nach ist das sowieso ein Pflichtattribut - siehe SELFHTML)
um zu bestimmen, welches PHP Script durch das submit() aufgerufen werden soll.
liebe Grüße mbr
P.S.: Mir ist natürlich auch klar, dass diese Methode nur mit eingeschalteten JS funktioniert und der user sonst keine Möglichkeit hat, das Formular abzusenden - aber ich denke das ist dir auch bewußt.