首页 > 解决方案 > 复选框和 Node JS

问题描述

我很难理解如何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>

快递/节点

app.post('/results', function(req, res){

    var checked = req.body.checked

    if (checked == "true") {
        console.log("true");
 } else {
        console.log("false");
    }
});

标签: javascriptexpressejs

解决方案


您的 req.body 中没有 name 属性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,因为未选中的复选框不会发送到控制器。


推荐阅读