Long time listener, first time caller.
I’ve created a form and sending a fetch request to my database (Xano). My JSON object looks like the below snippet.
{ "job_type": "full-time", "job_title": "3D Art Director", "job_location": "remote", "job_level": "senior", "salary": "$600 day" }
But Xano needs it to be one level deeper inside “data”, otherwise I can’t map things up with dot notation…
{ "data": { "job_type": "full-time", "job_title": "3D Art Director", "job_location": "remote", "job_level": "senior", "salary": "$600 day" } }
My JS is below. So where and how can I make the JSON response sit inside “data:”{} ? (I am a complete JS Noob and my code is a Frankenstein monster from various sources as I learn!)
document.addEventListener('DOMContentLoaded', () => { document.getElementById('jobForm').addEventListener('submit', handleForm); }); function handleForm(ev) { ev.preventDefault(); let jobForm = ev.target; let fd = new FormData(jobForm); //look at all the contents for (let key of fd.keys()) { console.log(key, fd.get(key)); } let json = convertFD2JSON(fd); //send the request with the formdata let url = 'https://hookb.in/eKjeKejY6NhlaRPldLNP'; let h = new Headers(); h.append('Content-Type', 'application/json'); let req = new Request(url, { mode: 'cors', // no-cors, *cors, same-origin headers: h, body: json, method: 'POST', }); fetch(req) .then((res) => res.json()) .then((data) => { console.log('Response from server'); console.log(data); }) .catch(console.warn); } function convertFD2JSON(formData) { let obj = {}; for (let key of formData.keys()) { obj[key] = formData.get(key); } return JSON.stringify(obj); }
Advertisement
Answer
You can do something like :
function convertFD2JSON(formData) { let obj = { data: {} }; for (let key of formData.keys()) { obj.data[key] = formData.get(key); } return JSON.stringify(obj); }