#javascript #arrays #node.js #forms #sails.js
#javascript #массивы #node.js #формы #sails.js
Вопрос:
Я пытаюсь ввести некоторые данные, чтобы получить данные post в виде массива в Sails / NodeJS;
Когда я пытаюсь использовать этот способ, то получаю данные в виде массива идеально.
<input type="text" class="form-control" name="answer[1][txt]">
<input type="text" class="form-control" name="answer[1][img]">
<input type="text" class="form-control" name="answer[2][txt]">
<input type="text" class="form-control" name="answer[2][img]">
Вывод:
answer:[ { txt: 'ans 1', img: 'yes' }, { txt: 'ans 2', img: 'yes' } ]
Но когда я использую атрибут enctype (enctype=»multipart / form-data») в форме, то не могу получить данные как предыдущий метод.
Вывод:
'answer[0][txt]': 'ans 1', 'answer[0][img]': 'yes',
'answer[1][txt]': 'ans 2','answer[1][img]': 'yes',
Я не знаю, что произошло, когда я использую атрибут enctype. Я хочу только сначала вернуть выходные данные с использованием атрибута enctype (multipart / form-data).
Спасибо
Комментарии:
1. почему вам нужно использовать multipart / form-data?
2. для загрузки изображений / файлов
3.Вы можете использовать
POST
<form>
usingfetch()
,XMLHttpRequest()
или другую функцию или можете использовать толькоhtml
<form>
?4. просто используя html-форму с express js
5. Вы можете проанализировать возвращаемые значения на стороне сервера, чтобы создать массив объектов или
JSON
из значений
Ответ №1:
Вы можете создать новый объект из возвращаемого в данный момент объекта; используйте for..in
цикл для итерации объекта, сопоставления "txt"
или "img"
части свойства, присвоения значения значению существующего объекта
let data = {
'answer[0][txt]': 'ans 1',
'answer[0][img]': 'yes',
'answer[1][txt]': 'ans 2',
'answer[1][img]': 'yes'
};
let res = {
answer: []
};
for (let prop in data) {
res.answer.push({
[prop.match(/txt|img/)[0]]: data[prop]
})
}
console.log(res);