He visto ejemplos de cómo publicar datos de formulario a través de FETCH, pero parece que agregan variables de formulario 1 por 1 o envían todo a través de JSON.
Como referencia, uso JQUERY $.post sin problemas, pero quería comenzar a usar FETCH.
Mi código actual es:
$(".btn_submit").on("click",function (){ let postvars; postvars = $('#myForm').serializeArray(); //postvars.push({name: 'newvar', value: 123}); //uncomment if you need to add vars in the postvars let url = "engine/api.php"; let act = ""; $.post(`${url}?act=${act}&=`, postvars, function (data) { var stat = data.stat; var statMsg = data.statMsg; var myData = data.data; if (stat == 'ok') { notify(statMsg, "success"); }).fail(function (d) { showAlert(d.status) }); });Esto funciona perfectamente para mi.
Pero parece que no puedo encontrar un equivalente de eso a través de FETCH. Lo mejor que pude conseguir es:
let form = document.getElementById("myForm"); let formData = new FormData(form); let url = "engine/api.php"; let act = "registration-details-clients"; fetch(`${url}?act=${act}&=`, {method:'post', body: formData}) .then(response => response.json()) .then(data => { var stat = data.stat; var statMsg = data.statMsg; var myData = data.data; if (stat == 'ok') { notify(statMsg, "success"); } else { showAlert(statMsg, 'error'); } }) .catch((error) => { console.error('Error:', error); showAlert(d.status); }); // END: });pero revisando el depurador y esto parece enviar una carga útil extraña (¿en bruto?)
-----------------------------20933611634071352467338304530 Content-Disposition: form-data; name="fname"