FR:Tutoriels:Execution des formulaires avec Xajax






FR:Tutoriels:Execution des formulaires avec Xajax

[edit] xajax.getFormValues()

xajax facilite grandement la gestion asynchrone des données d'un formulaire. La méthode xajax.getFormValues() peut être utilisée pour extraire automatiquement les données venant d'un formulaire et les passer en paramètres à une fonction PHP définie dans xajax.

xajax.getFormValues() prend obligatoirement un argument, qui peut être un 'id' précis du formulaire ou l'objet actuel du formulaire (voir note ci-dessous). Vous utiliserez xajax.getFormValues comme paramètre de votre fonction xajax, comme ceci :


xajax_processFormData(xajax.getFormValues('formId'));

où xajax_processFormData() est votre fonction prennant les données du formulaire en paramètre.

xajax génère alors une requète représentant les données qui seront traitées par le serveur xajax et passées à votre fonction PHP en tant que tableau, comme si vous aviez posté le formulaire puis utilisé en PHP le tableau $_GET.

NOTE: Votre fonction PHP doit prendre en paramètre le tableau, autrement les variables du formulaire ne seront pas passées à cette fonction.

NOTE: N'essayer pas d'accèder à $_GET... La déclaration de votre fonction devrait ressembler à MyFunc($dta). Quand elle sera appelé, le tableau contenant les variables du formulaire sera passé à $dta et vous pourrez le manipuler comme n'importe quel tableau associatif. I tried $_GET to no avail. (Note de la note: vous pouvez obtenir les données par $_POST['xajaxargs'][0] : c'est encodé comme un tag XML xjxquery -- mais pourquoi ne pas laisser xajax vous faciliter la vie ? En plus, ça pourrait changer dans les versions futures.)

xajax peut aussi manipuler des noms complexes pour générer des tableaux multidimensionnels et associatifs. Pour l'instant, si vous avez un formulaire avec trois cases à cocher et que vous leur donnez à toutes le même nom "checkbox[]", mais des valeurs différentes comme "check1", "check2", et "check3", et que vous utilisez la fonction xajax.getFormValues comme paramètre de votre fonction xajax, la fonction PHP recevra un tableau comme ceci :

array (
  'checkbox' => 
  array (
    => 'check1',
    => 'check2',
    => 'check3',
  ),
)

Ce tableau imite la structure du tableau $_GET que vous auriez eu si vous aviez posté le formulaire normalement. Vous pouvez donc accéder aux données des cases à cocher comme ceci : $aFormData['checkbox'][0]


NOTE: Précisez bien les id (en plus des name) dans les attributs des formulaires. Si vous oubliez de préciser l'id, Internet Explorer utilise la valeur du tag name comme id et la fonction getFormValues marchera quand même. Mais Firefox ne trouvera pas les formulaires !

NOTE: Avec Firefox, assurez vous de mettre un attribut name à tous les champs que vous voulez récupérer avec la fonction getFormValues. Juste l'attribut id ne fonctionnera pas.

[edit] Soumettre seulement une partie d'un formulaire

Si vous voulez soumettre une partie seulement des éléments d'un formulaire, il y a une nouvelle option à partir de la version 0.2.1. Un paramètre optionnel de xajax.getFormValues, précisant un préfixe -- si il est défini, seulement les éléments commencant par ce préfixe seront envoyés à la fonction PHP. Cela peut s'avérer utile lorsque vous avez un grand formulaire, pour mettre à jour une petite section de celui-ci. Le préfixe est le troisième paramètre de la fonction, le premier étant l'id du formulaire et le deuxième étant le booléen qui indique si on doit soumettre les champs désactivés.

Donc la syntaxe complète devient :

xajax_processFormData(xajax.getFormValues(formID[,bSubmitDisabled[, prefix]));