我目前正在嘗試使用 PugJS 進行測驗。我正在嘗試對表單發布時正文中的答案進行分組。
目前,當我發布以下表格時,我得到了這些資料:

console.log(JSON.stringify(req.body));
回傳以下內容: {"answer":["a","b","c","d","e","f"]}
所有資料都在同一個“答案”物件中。在我的 PugJS 檔案中,我執行以下操作:
block contents
form(action=url, method='POST')
each question in config
h1= question.question
.row.mb-3
- for (var x = 0; x < question.requiredAnswers; x )
label.col-sm-2.col-form-label(for='answer') Antwoord #{x 1}
.col-sm-10
input.form-control(type='text' name='answer' id='answer')
hr
button.btn.btn-primary(type='submit', value='Submit') Verzend de antwoorden
如您所見,我一直使用相同的標簽(for='answer') 和 input(name='answer' id='answer')
我嘗試使用變數 x 將物件更改為: label(for='answer #{x 1}') 和 input(name='answer #{x 1}' id='answer #{x 1 }')
我想要的輸出:
{"answer1":["a"], "answer2":["b","c"], "answer3":["d","e","f"]}
我還嘗試使用 #{x 1} 轉義變數,但沒有運氣!
uj5u.com熱心網友回復:
瀏覽器只會以簡單的鍵值對形式提交表單引數。如果有多個同名的key,它們會按原樣重復提交。我認為是 Expressbody-parser中間件將具有相同名稱的鍵轉換為陣列。
在 Express 中,req.body.someParameter如果someParameter在表單中僅出現一次,則為字串值。如果多次收到該引數,則它是一個字串陣列。
doctype html
html
body
//- Test data:
- const config = [ { requiredAnswers: 1}, { requiredAnswers: 2},{ requiredAnswers: 3}]
form(method="post")
each question,i in config
p Q#{i 1}
ul
- for (let x=0; x<question.requiredAnswers; x )
label(for="Q" i "A" x) Antwoord #{x 1}
input(name="answer" (i 1) id="Q" i "A" x)
br
input(type="submit")
label單擊上面的s 將正確設定焦點到每個相應的輸入框。當使用您使用的相同值提交時,瀏覽器會在請求負載中發送以下內容:
answer1=a&answer2=b&answer2=c&answer3=d&answer3=e&answer3=f
而req.body在服務器是:
{"answer1":"a","answer2":["b","c"],"answer3":["d","e","f"]}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/362026.html
