Var. eines Formulars per POST über JS an PHP übergeben
Dennis Rochel
- javascript
Morgen, folgendes Problem:
Ich habe ein Formular mit mehreren dynamisch generierten inputs (textfelder,checkboxen etc...)
Somit ergibt sich foldender Aufbau:
function contentSave()
{
xmlHttp_getSite.open("GET","save.php", true);
xmlHttp_getSite.onreadystatechange = contentGet_result;
xmlHttp_getSite.send(null);
}
<form method="POST" action="javascript:contentSave()>
/* Mehrere input felder */
<input id='text1' type=textfield name=text1 value='1234'>
</form>
Soweit so gut. das Formular übergibt ja die ganzen eingegebenen Werte an die contentSave() Funktion. wie kann ich diese direkt weiter an die save.php seite weitergeben, so dass ich innerhalb der save.php einfach auf $_POST[text1] zugreifen kann?
Was ich umgehen möchte, ist folgender Lösungsansatz:
function contentSave()
{
var text1= document.getElementById('text1').value
xmlHttp_getSite.open("GET","save.php?text1="+text1, true);
xmlHttp_getSite.onreadystatechange = contentGet_result;
xmlHttp_getSite.send(null);
}
da es sich um ca. 40-60 (je Nachdem) Inputfelder handelt. Ich möchte einfach ALLE durchreichen. Ist sowas möglich?
Gruß
Dennis
Hallo!
Mein AJAX (mich gruselts immer beim sagen / schreiben dieses Modewortes) ist zwar ein bisschen eingerostet aber wenn ich mich recht erinnere dann greifst du über das $_GET[] Array auf die Daten zu.
Weiters verstehe ich nicht warum du nicht gleich deine PHP-Datei bei "action" im Formular angibst, immerhin willst du ja genau das über einen mehr oder weniger sinnlosen Umweg erreichen.
Nachtrag:
Weiters verstehe ich nicht warum du nicht gleich deine PHP-Datei bei "action" im Formular angibst, immerhin willst du ja genau das über einen mehr oder weniger sinnlosen Umweg erreichen.
Dann musst du natürlich über das $_POST[] Array zugreifen (sofern bei "method" angegeben).
ergänze das Formular um eine Id:
<form id="meinFormular" ...>
und in der Funktion rufst du einfach alle input-Felder ab
function contentSave() {
var felder = document.getElementById("meinFormular").getElementsByTagName('input');
var ausgabe="?";
for (var i=0; i<felder.length; i++) {
ausgabe += felder[i].name + "=" + felder[i].value + "&";
}
xmlHttp_getSite.open("GET","save.php" + ausgabe, true);
...
}
Das zum Prinzip.
In der Praxis würde ich noch ein paar Sicherheitsabfragen einbauen, ob das Formular existiert, und ob die name- und value-Angaben überhaupt existieren oder leer sind.
<form method="POST" action="javascript:contentSave()>
/* Mehrere input felder */
<input id='text1' type=textfield name=text1 value='1234'>
</form>
Das ist nicht sinnvoll, auf das Pseudo Protokoll 'javascript:' solltest du hier verzichten und stattdessen einen Eventhandler verwenden.
< form action= "save.php" onsubmit="return contentSave(this);">
Dann hast du einmal die Referenz auf das Formular und einen Fallback wenn das JS nicht funktioniert.
Was ich umgehen möchte, ist folgender Lösungsansatz:
function contentSave()
{var text1= document.getElementById('text1').value
function contentSave(form)
{
var text1= form.text1.value
da es sich um ca. 40-60 (je Nachdem) Inputfelder handelt. Ich möchte einfach ALLE durchreichen. Ist sowas möglich?
Ja, mit elements
Struppi.