Проверенные ящики и Node JS - PullRequest
0 голосов
/ 23 февраля 2019

Я изо всех сил пытаюсь понять, как 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");
    }
});

1 Ответ

0 голосов
/ 23 февраля 2019

Нет в вашем req.body объекта с именем 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, потому что не отмеченные флажки не отправляются контроллеру.

...