2017-06-15 69 views
0

我已經生成了一個長形式的圖像對。用戶打算用一堆複選框將每個圖像的圖像差異分類。如何在Node.Js + Express + Jade中提交複雜的表單?

因此,每個複選框被重複多次並且其特徵在於:

1)差的類型意味着

2)左圖像名稱

3)右圖像名稱

如何收集所有複選框的數據並提交一個按鈕到服務器?如何編碼數據發送?

在普通的網絡中,我會將所有參數編碼爲checkboxnames,然後在服務器端解碼它們。可能是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

您提交它像任何其他形式。假設你的代碼是建立一個類似:

<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) 
} 
+0

這意味着,每一個表單字段變成一個單一的機構領域,這意味着我仍然需要編碼的名字拼寫內幕信息這我想避免/隱藏。 – Dims