如何在Node.Js + Express + Jade中提交复杂的表单?

时间:2017-06-15 11:55:15

标签: json node.js express pug form-submit

我已经生成了一对带有成对图像的长形式。用户打算用一堆复选框对每对图像差异进行分类。

因此,每个复选框都会重复多次,其特征为:

1)差异的类型意味着

2)左图像名称

3)右图像名称

如何收集所有复选框数据并使用一个按钮将其提交给服务器?如何编码要发送的数据?

在普通网络中,我会在复选框名称中编码所有参数,然后在服务器端解码它们。可能是Express + Jade有这个特殊的手段吗?可能是我可以获得一个JSON,描述所有填写的表格并立即发送它?

UDPATE

目前我要将数据编码为表单字段名称,如此处

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

等等。

在服务器端,我应该做类似

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

现在,假设名称需要能够包含任何字符,所以我需要转义/取消它们等等。

是不是有一些工具可以自动完成这项工作?

1 个答案:

答案 0 :(得分:1)

您可以像任何其他表单一样提交。假设您的代码设置类似于:

<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>

然后假设您已配置body-parser,表单字段将在req.body上提供。因此,为了获得复选框的提交数据,我将执行以下操作:

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