JavaScript не может получить массив из HTML-формы в expressJS

Я конвертирую бэкэнд Php в NodeJS. В PHP я написал форму, в которой использовал массив для отправки нескольких похожих типов данных (например, места, которые вы посетили в прошлом), я знал, что почти аналогичная версия JS будет работать для ExpressJS. Однако всякий раз, когда я пытаюсь получить доступ к переменной, она выводит «undefined», и свойство length массива также не работает.
Код ExpressJS:

router.post('/hello', function(req, res)
{
var locations = [];

var apple = ["apple", "banana"];
var name = req.body.name;
locations = req.body.location;
console.log(name + " <<>> "+ locations);
console.log(apple);
return;
});

Следующий код возвращает следующий вывод:

POST /new/hello - - ms - -
Bangladesh <<>> undefined
[ 'apple', 'banana' ]

Форма HTML приведена ниже:

<form role="form" action="/new/hello" method="POST">

<div class="form-group">
<label for="email"> Trek name: </label>
<input type = "text" class = "form-control"name="name">
</div>

<div class="form-group">
<label for="location">trek_location 1: </label>
<input type="text" class="form-control" id="text" name="location[]">
</div>

<div class="form-group">
<label for="location">trek_location 2: </label>
<input type="text" class="form-control" id="text" name="location[]">
</div>

<div class="form-group">
<label for="location">trek_location 3: </label>
<input type="text" class="form-control" id="text" name="location[]">
</div>

<div class="form-group">
<label for="location">trek_location 4: </label>
<input type="text" class="form-control" id="text" name="location[]">
</div>

<button type ="submit" class="btn btn-default"> Submit </button>
</form>

Я использовал эту же форму для моего бэкэнда Php, и это сработало. Я много гуглил и везде метод один и тот же для извлечения массива из формы. Тем не менее, это не работает для меня!

0

Решение

Я успешно сделал то, что вы пытаетесь достичь, и мой код отличается от вашего в двух областях:

  1. В моей HTML-форме входное имя не содержит скобок массива, т.е. мой HTML выглядит так:

  2. Я использую экспресс-связующее ПО под названием bodyparser (Я думаю, что где-то читал, что это уже предустановлено в последней экспресс-версии, но, возможно, стоит попробовать.)

Также есть предостережение: если у вас есть несколько локаций, отправленных на сервер, вы получите хороший массив. Если у вас есть только одно местоположение, вы получите этот один элемент, а не массив, содержащий элемент. Поэтому обязательно проверьте это в бэкэнде.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector