2011-09-25 4 views
0

je forme, que j'utilise Text::MicroTemplate d'ajouter des champs à elle, tels que: Nom de l'utilisateur Nom de famille EmailText :: MicroTemplate et validation côté serveur [Perl]

les champs sont ajoutés à l'aide une boucle à l'intérieur d'une balise <form>, les données pour celles-ci sont validées à l'aide d'une regex (envoyée en paramètre au template et "cachée" dans le HTML en <span> tag avec styledisplay:none), jusqu'à présent, tout va bien.

soudainement je dois ajouter un autre champ, pour lequel les données doivent être validées côté serveur, quelle est la meilleure approche pour le faire? (Je peux bien sûr, vérifier les données POST, et si elle est incorrecte, peut renvoyer le formulaire avec le message d'erreur, mais alors, je vais devoir rendre toute la page à nouveau, ce que je ne fais pas pour les autres champs .. .)

probablement quelque chose avec ajax?

grâce,

Répondre

1

AJAX peut éviter l'ensemble rendu des pages qui est une bonne chose ™.

Vous savez avec certitude qu'écrire du code AJAX fonctionnant avec différentes implémentations de navigateur, conduira au code spaghetti-JavaScript, donc mon conseil est de niveler les différences avec une bonne bibliothèque JavaScript. J'ai choisi jQuery, car il est facile à apprendre et amusant à utiliser si vous connaissez déjà les sélecteurs CSS2. Il y a d'autres bonnes bibliothèques YUI, Prototype, MooTools, il suffit d'en choisir une.

Avec jQuery, vous pouvez appeler un appel AJAX de diverses façons dont cette version simple:

$.post(url, parameters, callback, returned_type); 

  • url: URL de la ressource côté serveur qui valide l'entrée
  • paramètres: objet dont les propriétés sont sérialisées en paramètres codés
  • callback: callback invoqué à la fin de la requête (le corps et le statut de la réponse sont passés au callback en tant que premier et second paramètres).
  • Type: une chaîne comme 'html', 'text', 'xml', 'json', qui raconte quel genre de réponse à attendre du serveur.

Habituellement, pour envoyer un formulaire, vous devez brancher un gestionnaire d'événements au bouton soumettre: le gestionnaire d'événements détourne le soumettre événement, donnant la possibilité aux valeurs de valider côté client et de les envoyer avec un appel AJAX.

$('#my_form').submit(function(event) { 
    // Prevent classic submission that ends with whole page render 
    event.preventDefault(); 
    // Here iterate through form elements and do a client-side check 
    ... 
    $ajax.post(...); 
} 

Je peux comprendre que mon exemple est oversimplifed, mais ce modèle est assez commun: pirater-submit-événement et do-it-un autre sens. Vous trouverez plus d'exemples (y compris ceux avec de puissants plugins jQuery) dans le chapitre 11 de jQuery Cookbook, intitulé Améliorations de formulaire Html avec les plugins.

Questions connexes