2017-06-15 7 views
0

J'ai généré un long formulaire avec des paires d'images. L'utilisateur est destiné à classer la différence d'image pour chaque paire avec un tas de cases à cocher.Comment soumettre un formulaire complexe dans Node.Js + Express + Jade?

Ainsi, chaque case est répétée plusieurs fois, et caractérisé par:

1) le type de différence cela signifie

2) a quitté le nom d'image

3) droite nom de l'image

Comment collecter toutes les données des cases à cocher et les soumettre avec un bouton au serveur? Comment encoder les données à envoyer?

Dans le Web normal, je coderais tous les paramètres dans checkboxnames, puis les décoder du côté serveur. Peut être Express + Jade a des moyens spéciaux pour cela? Peut-être que je peux obtenir un JSON, décrivant tout formulaire rempli et l'envoyer à la fois?

UDPATE

Actuellement, je suis pour encoder des données en forme nom de champ, comme ici

<input type="checkbox" name="imagename1_imagename2" value="transitionname1"> 
<input type="checkbox" name="imagename3_imagename4" value="transitionname2"> 
<input type="checkbox" name="imagename5_imagename6" value="transitionname1"> 
... 

et ainsi de suite.

côté serveur que je devrais faire quelque chose comme

for(var checkbox_name in req.body) { 
    var pair = checkbox_name.split("_"); 
    var left_image = pair[0]; 
    var right_image = pair[1]; 
    ... 
} 

maintenant, supposons que les noms doivent être en mesure de contenir tout caractère, donc je dois échapper/les Unescape et ainsi de suite.

N'y a-t-il pas un outil pour automatiser ce travail?

Répondre

1

Vous le soumettez comme n'importe quelle autre forme. En supposant que votre code est configuré similaire à:

<form action="/example/handleFormSubmit" method="POST"> 
    <!-- Various generated form elements --> 
    <input type="checkbox" id="example" name="example" value="example"> 
    <label for="example">Example</label> 
</form> 

Ensuite, en supposant que vous avez configuré body-parser, les champs de formulaire seront disponibles sur req.body. Donc, pour obtenir les données soumises pour la case à cocher, je ferais ce qui suit:

exports.handleFormSubmit = (req, res) => { 
    // The `name` of the input field is also the property name on `body` 
    console.log(req.body.example) 
} 
+0

Cela signifie que chaque champ de formulaire unique se transforme en un seul champ de corps, et cela signifie que je dois encore encoder des informations dans l'orthographe du nom qui Je veux éviter/cacher. – Dims