I want to get the entire nested object (with all the props) of a value that is stored in a FormData. This is possible?
Example
const formData = new FormData();
formData.append('k1', 123);
formData.append('k2', 'ABC');
formData.append('k3', {
a: 1,
b: '2'
});
data = {};
formData.forEach((value, key) => {
console.log(`Key: ${key}`, {
key,
value,
type: typeof(value),
getResult: formData.get(key),
getAllResult: JSON.stringify(formData.getAll(key))
});
data[key] = value;
});
console.warn('Final result', {
data
});
.as-console-wrapper {
max-height: 100% !important;
}
There is a way to capture the keys and values of the k3
without using jQuery or any external library?
CodePudding user response:
Ok, so this isn't quite what you're after, but here goes. If you want to pass in an object for your k3
value, then you'll need to stringify
it first. You'll then need to parse it back out to an object wherever you want to use it. I've updated your code above to stringify the value, and attempt to parse it back out in your debugging (just so that you can see it)
const formData = new FormData();
formData.append('k1', 123);
formData.append('k2', 'ABC');
formData.append('k3', JSON.stringify({
a: 1,
b: '2'
}));
data = {};
formData.forEach((value, key) => {
console.log(`Key: ${key}`, {
key,
value,
type: typeof(value),
rawResult: formData.get(key),
potentialObjResult: (function(val){
let potential = undefined;
try {
potential = JSON.parse(val);
} catch(ex){
console.log('could not parse: <' val '> as JSON');
}
return potential;
})(formData.get(key))
});
data[key] = value;
});
console.warn('Final result', {
data
});