soumettr un formulaire

Répondre
mathurin
le 23/07/2013 à 14:36
mathurin
bonjour,
svp j'aimerai savoir comment envoyer un seul champ modifié dans un formulaire
ulrich
LupusMic
le 23/07/2013 à 22:15
LupusMic
Je suppose que, dans l'idée, tu souhaites vérifier un champ pendant qu'il est saisi, ou sauvegarder le formulaire pendant sa rédaction.

Dans ces cas, il te faut deux choses :
- du JavaScript côté client pour gérer les événements
- du PHP côté serveur pour gérer les mises à jour.

Quand je mets en place un tel service, je créé un point d'accès (du genre /ajax.php pour rester basique), qui renvoie un JSON et qui défini pleinement le code de retour HTTP.

<?php

$result = array('success' => false, 'payload' => null, 'errors' => array());

/* Traitement de la requête
*/


header('Content-type: application/json; charset=utf-8');
if($result['success'])
header('Status 200 OK');
else
header('Status 400 Bad Request');

echo json_encode($result);
/* Cet objet JSON sera envoyé:
{ success: false
, payload: null
, errors: []
}
*/


Tu peux utiliser ce squelette pour construire ton point d'accès.

Ensuite, côté client, il faut que tu gère deux choses : les événements du formulaire ; le lien AJAX.
Je cette partie, je te conseille d'utiliser un framework tel que jQuery. Ça t'évitera un tas problèmes pénibles liés à la gestion des navigateurs.

Voici une ébauche (non testée), mais assez typique. Il faut que tu te familiarise avec le concept de programmation événementielle. $ est un alias de jQuery.
// Chargement de l'écouteur
$(document).ready(function () { new form_listener('form') })

// Définition de l'écouteur
window.form_listener = function(search_path)
{
var listener = this;
var nodes = $(search_path);
var access_point = '/ajax.php';

// Pour chaque contrôle il faut attacher un écouteur:
nodes.filter(':input').focusout(function () { return listener.update(this, arguments) });

// La fonction qui écoute les contrôles
this.update = function(node, args)
{
// Tu construis la requête que tu veux envoyer
var payload = { };

// Tu envoyes à ton point d'accès
$.ajax(access_point, payload)
.done(function() { listener.feedback(this) });
}

// La fonction qui gère le retour de ton appel AJAX
this.feedback = function(xhr)
{
}
}


Bien sûr, il y a pas mal de bouleau qui reste à faire.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours