добавить в другую форму к input hidden.
Изначально делал таким способом:
const pickedOffers = new FormData(form),
value = Object.fromEntries(pickedOffers.entries());
pickedInput.value = JSON.stringify(value);
но заметил, что если в форме есть чекбоксы с одинаковыми именами, например id[], то в момент создания объекта они переписывают друга и остаётся только последний.
Стал создавать строку вручную. Работает, но выглядит колхозно.
const pickedOffers = new FormData(form);
let json = '{';
pickedOffers.forEach((value, key) => {json += '"'+key+'":' + '"'+value+'",'});
json = json.slice(0, -1);
json+='}';
pickedInput.value = json;
Есть ли варианты "поэлегантнее"?)
https://stackoverflow.com/questions/41431322/how-to-convert-formdata-html5-object-to-json ну тут миллион вариантов хд
читал, но они почти все идут через конвертацию через объект. И на этом этапе элементы с одинаковыми именами переписываются
не, там есть с учётом этого
var object = {}; formData.forEach((value, key) => { // Reflect.has in favor of: object.hasOwnProperty(key) if(!Reflect.has(object, key)){ object[key] = value; return; } if(!Array.isArray(object[key])){ object[key] = [object[key]]; } object[key].push(value); }); var json = JSON.stringify(object);
щас тогда повнимательнее прочитаю. Спасибо!
ну вот я кинул один из вариантов надо, конечно, смотреть по более сложным формам, что и как
ну и с файликами что делать в таком случае? или это не ваш кейс?
не. Тут простая форма только с разными айдишниками.
Обсуждают сегодня