复选框和Node JS

时间:2019-02-23 13:33:58

标签: javascript express ejs

我正在努力了解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");
    }
});

1 个答案:

答案 0 :(得分:1)

您的请求正文中没有名称为checked的属性。相反,您具有两个属性:citysearchcelcius。通过以下方式在您的复选框上添加价值:

<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,因为未选中的复选框不会发送到控制器。