Tengo un formulario en el que quiero obtener todos sus valores y convertirlos en un objeto json.
el problema es que no obtengo los campos de selección múltiple, solo un campo. este es mi código lo que me estoy perdiendo?
let reportDropDowns = $('#getReport').serialize(); reportDropDowns = decodeURI(reportDropDowns); let reportDropDownsJson = {}; reportDropDownsJson = JSON.parse('{"' + reportDropDowns.replace(/&/g, '","').replace(/=/g,'":"') + '"}', function(key, value) { return key===""?value:decodeURIComponent(value) });
En lugar de serializar los datos directamente a través .serialize()
, debe usar .serializeArray()
para obtener los datos como una matriz. Luego puede manipular la matriz en un objeto/JSON. Prueba esto
let reportDropDownsJson = {}; $('#getReport').serializeArray().forEach(({name, value}) => { if( reportDropDownsJson.hasOwnProperty(name) ){ if( !Array.isArray(reportDropDownsJson[name]) ){ reportDropDownsJson[name] = [reportDropDownsJson[name]]; } reportDropDownsJson[name].push(value); }else{ reportDropDownsJson[name] = value; } });