De:Tutorien:Formulare mit xajax verarbeiten
De:Tutorien:Formulare mit xajax verarbeiten
[edit] xajax.getFormValues()
xajax macht das asynchrone Verarbeiten von Formulardaten extrem einfach. Die xajax.getFormValues()-Methode kann verwendet werden, um Daten eines Formulars automatisch zu extrahieren und als Parameter an eine registrierte xajax-Funktion zu übergeben.
xajax.getFormValues() erwartet ein verbindliches Argument, das entweder die id des zu verabeitenden Formulars oder das tatsächliche Formular-Objekt ist (siehe Hinweis unten). Setzen Sie xajax.getFormValues als Parameter der xajax-Funktion wie folgt:
xajax_processFormData(xajax.getFormValues('formId'));
xajax generiert einen Query-String, der die Formular-Daten enthält und bei Serverabfrage von xajax geparst und als assoziatives Feld an die entsprechende PHP-Funktion übergeben wird -- so als ob das Formular mit der GET-Methode abgeschickt worden wäre.
Hinweis: Die Definition Ihrer PHP-Funktion muss einen Parameter für das Feld enthalten, ansonsten werden die Formular-Variablen nicht an die Funktion übergeben.
Hinweis: Versuchen Sie nicht auf $_GET zuzugreifen. Die verarbeitende PHP-Funktion sollte dem Schema MyFunc($dta) entsprechen. Wenn sie aufgerufen wird, werden die Formular-Daten an $dta übergeben und können wie jedes andere assoziative Feld angesprochen werden.
xajax erzeugt aus komplexen Benennungen von Formularelementen mehrdimensionale und assoziative Felder. Ein Formular mit drei Checkboxen, die nach dem Schema "checkbox[]" benannt sind, aber unterschiedliche Werte wie "check1", "check2" und "check3" enthalten, würde das folgende Feld an die PHP-Funktion übergeben, wenn die xajax.getFormValues-Funktion als Paramter der xajax-Funktion gesetzt ist:
array ( 'checkbox' => array ( 0 => 'check1', 1 => 'check2', 2 => 'check3', ), )
Die Struktur des Feld-Arguments der Funktion entspricht der Struktur, die das $_GET-Feld bei traditionellem Übertragen des Formulars hätte. Auf die Checkbox-Daten im Feld kann so zugegriffen werden:
$aFormData['checkbox'][0]
Hinweis: Stellen Sie sicher, jedem Formular neben dem name-Attribut auch eine id zuzuweisen. Falls Sie einem Formular keine id zugewiesen haben, wird der Internet Explorer den Wert des name-Attributs als id annehmen und die getFormValues-Funktion wird anscheinend trotzdem funktionieren. Der Firefox kann das Formular jedoch nicht finden, wenn es keine explizite id gesetzt hat.
Hinweis: Wenn Sie den Firefox verwenden, sollten Sie darauf achten, das name-Attribut jedes Formular-Elements zu setzen, das Sie über die getFormValues-Funktion auslesen möchten. Das ausschließliche Setzen einer id wird nicht funktionieren.
[edit] Lediglich Teile eines Formulars übertragen
Falls Sie nur einen Teil der Element eines Formulars übertragen möchten, können Sie ab Version 0.2.1 einen optionalen Parameter für xajax.getFormValues angeben, der ein Präfix festlegt. Ist dieses gesetzt, werden lediglich diejenigen Formular-Elemente an die PHP-Funktion übergeben, deren Namen mit dem entsprechenden Präfix beginnen. Das kann sehr nützlich sein, wenn Sie nur bestimmte Teile eines großen Formulars aktualisieren möchten. Der Präfix-Parameter ist der dritte Parameter der Funktion. Der erste bestimmt die id des Formulars, der zweite zeigt an, ob deaktivierte Felder übertragen werden sollen.
Die vollständige Syntax wird demnach zu:
xajax_processFormData(xajax.getFormValues(formID[,bSubmitDisabled[, prefix]));