Checkbox mit Prototype lesen und als Request Obj. an PHP Script
Jörg
- javascript
Hallo,
ich verwende in einem Formular mehrere Checkboxen die (in diesem Beispiel) die Funktionen eines Mitarbeiters beschreiben.
<input type="checkbox" name="funktion[1]" id="funktion[1]" value="A" />
<input type="checkbox" name="funktion[2]" id="funktion[2]" value="B" />
<input type="checkbox" name="funktion[3]" id="funktion[3]" value="C" />
Die Werte der Checkboxen sollen per Prototype mittels:
new Ajax.Request('script.php', {parameters: {funktion:$F('funktion')}});
an das weiterverarbeitende PHP Script übergeben werden. Das funcktioniert nicht, auch nicht mit funktion:$A('funktion').
Wie muss ich die (aktivierten) Checkboxen auslesen um die per POST Methode an mein Script zu übermitteln?
Gruß
Jörg
Hi,
<input type="checkbox" name="funktion[1]" id="funktion[1]" value="A" />
<input type="checkbox" name="funktion[2]" id="funktion[2]" value="B" />
<input type="checkbox" name="funktion[3]" id="funktion[3]" value="C" />
new Ajax.Request('script.php', {parameters: {funktion:$F('funktion')}});
ich werde nie verstehen, warum so oft angenommen wird, dass irgend eine Art von Magie plötzlich komplett unterschiedliche Namen gleich werden lässt. Die Eingabefelder haben drei (in Worten: 3) absolut verschiedene Namen, und *keiner* von denen lautet 'funktion'.
Wie muss ich die (aktivierten) Checkboxen auslesen um die per POST Methode an mein Script zu übermitteln?
$F('funktion[1]'), $F('funktion[2]') und $F('funktion[3]'). Mit den entsprechenden Bezeichnern im Objekt, die dann ihrerseits in Anführungszeichen stehen müssen.
Cheatah
Hi!
Die Eingabefelder haben drei (in Worten: 3)
Müde?
off:PP
Hallo Cheatah,
Sinn und Zweck war eigentlich daraus ein Array zu bauen das ich dann (mit welcher Prototype Syntax auch immer) als Array per POST Methode an das weiterverarbeitende Script geben kann. Das könnte auch so lauten:
<input type="checkbox" name="funktion[]" id="funktion[]" value="A" />
<input type="checkbox" name="funktion[]" id="funktion[]" value="B" />
<input type="checkbox" name="funktion[]" id="funktion[]" value="C" />
Welche Syntax (auch für die Bennneung der Checkboxen), dass war ebenfalls Gegenstand meiner Frage. Wenn Du einen besseren Vorschlag für die Bennung der Checkboxen hast, lass es mich wissen. Hintergrund ist, das die Checkboxen dynamisch aus einer DB erzeugt werden. Meine Ajax Funktion also nie weiß, wie viele Checkboxen übergeben werden. Der User im Backend hat die Möglichkeit, beliebig viele Funktionen hinzuzufügen oder zu entfernen. Folglich variiert auch die Anzahl der Checkboxen.
Jörg
Hallo
Hintergrund ist, das die Checkboxen dynamisch aus einer DB erzeugt werden. Meine Ajax Funktion also nie weiß, wie viele Checkboxen übergeben werden. Der User im Backend hat die Möglichkeit, beliebig viele Funktionen hinzuzufügen oder zu entfernen. Folglich variiert auch die Anzahl der Checkboxen.
Du musst hier aber unterscheiden. Die Syntax ' name="name[]"' muss benutzt werden, falls PHP zur Verarbeitung eines Formulars eingesetzt wird. Nur so weiß PHP, dass es um ein (mögliches) Array von Werten unter gleichem Namen geht, mit ' name="name"' würde nur der Wert der letzten angeklickten Checkbox von PHP angenommen.
Für alle[1] anderen Sprachen (z.B. Perl und JavaScript) handelt es sich um verschiedene Namen, wenn Arrayindizes vorgegeben sind (z.B. name[wert] und name[wort]). Da nimmt man entweder ' name="name"' oder man muss jeden Namen einzeln ansprechen.
[1] soweit ich das überblicken kann
Tschö, Auge
Hi,
Welche Syntax (auch für die Bennneung der Checkboxen), dass war ebenfalls Gegenstand meiner Frage.
Nö, war's nicht.
Hintergrund ist, das die Checkboxen dynamisch aus einer DB erzeugt werden. Meine Ajax Funktion also nie weiß, wie viele Checkboxen übergeben werden.
Kann ihr ja auch egal sein.
Leute mit JavaScript-Grundwissen kennen getElementsByTagName, und wissen dass die davon gelieferte NodeList eine length-Eigenschaft hat.
Und wer mit JavaScript-Frameworks arbeitet, sollte auch deren Möglichkeiten kennen, Element aus dem DOM per Query-Selektor zu ermitteln und zu durchlaufen.
MfG ChrisB