我正在努力了解html check boxes
如何与节点Js和Express一起工作。我在EJS
中有一个简单的表单,在进一步研究后端逻辑之前,我想确保正确的值被提取出来。我找不到任何资源可以帮助,所以我来了这里(但是我可能很蠢,答案就在我的鼻子底下)。
现在,选中复选框后,每个console.log
都将返回false
,而不是true
。我不认为这是我的表格,它可能是Express中后端的构建方式不正确。任何帮助都会很棒。
EJS
<form action = "/results" method ="POST">
<ul>
<li>
<label for="citysearch">City Name</label>
<input type="text" name="citysearch" id="citysearch" placeholder="e.g. Los Angeles">
</li>
<li>
<label for = "Celcius">Celcius?</label>
<input type="checkbox" name="celcius" id="celcius" checked="true">
</li>
</ul>
<button type="submit">submit</button>
</form>
Express / Node
app.post('/results', function(req, res){
var checked = req.body.checked
if (checked == "true") {
console.log("true");
} else {
console.log("false");
}
});
答案 0 :(得分:1)
您的请求正文中没有名称为checked
的属性。相反,您具有两个属性:citysearch
和celcius
。通过以下方式在您的复选框上添加价值:
<input type="checkbox" name="celcius" id="celcius" checked="true" value="true">
,并在您的控制器中使用此:
if (req.body.celcius) {
console.log("true");
} else {
console.log("false");
}
请注意,如果您不选中此复选框,那么req.body将只有一个属性citysearch
,因为未选中的复选框不会发送到控制器。