quiero enviar datos en forma de matriz de filas, que se envía es "nombre" y "valor" de cada fila, (1 fila a la siguiente fila)
a continuación lo guardo en formData.append('data[kelompok_jenjang]', datas[i].name);
luego publique en la url con formData
data = [ { "name": "Diploma", "indicator": 2, "value": 0 }, { "name": "Dokter", "indicator": 2, "value": 0 }, { "name": "Magister", "indicator": 2, "value": 0 }, { "name": "Profesi", "indicator": 2, "value": 0 }, { "name": "Sarjana", "indicator": 2, "value": 0 }, { "name": "Sarjana Terapan", "indicator": 2, "value": 0 } ] handleSaveTarget = async(e) =>{ e.preventDefault(); let data = this.data; if(data !== undefined){ swal({ title: "Are You Sure ?", text: "Save", icon: "warning", buttons: true, dangerMode: false, }).then((Agree) =>{ if(Agree){ var formData = new FormData(); let sessiondata = JSON.parse(localStorage.getItem("sessiondata")); this.setState({display: true}); let datas = this.state.ref_data; let arrayLength = datas.length; for(var i=0; i < arrayLength; i++){ formData.append('data[id_sp]', sessiondata.i_idunit); formData.append('data[id_point]', 1); formData.append('data[kelompok_jenjang]', datas[i].name); formData.append('data[value]', datas[i].value); axios.post(AppConfig.SaveTarget, formData).then(res => { swal({ title: datas.name, text: "Target Masa Studi Berhasil Disimpan.", icon: "success", dangerMode: false, }) }).catch(err=>{ swal({ title: datas.name, text: "Target Masa Studi Gagal Disimpan.", icon: "error", dangerMode: false, }) }) } } }) }else{ swal({ title: "Data Not Found", text: "Something's Wrong!", icon: "error", // buttons: true, dangerMode: false, }) } }hay una mejor manera que esta para pasar datos en forma de matriz uno por uno, gracias
Debe hacer que su función sea asíncrona para usar la palabra clave await para esperar a que finalice cada solicitud
swal({ title: "Are You Sure ?", text: "Save", icon: "warning", buttons: true, dangerMode: false, }).then(async (Agree) => { if (Agree) { // Your code for (var i = 0; i < arrayLength; i++) { const formData = new FormData(); formData.append("data[id_sp]", sessiondata.i_idunit); formData.append("data[id_point]", 1); formData.append("data[kelompok_jenjang]", datas[i].name); formData.append("data[value]", datas[i].value); await axios .post(AppConfig.SaveTarget, formData) .then((res) => { swal({ title: datas.name, text: "Target Masa Studi Berhasil Disimpan.", icon: "success", dangerMode: false, }); }) .catch((err) => { swal({ title: datas.name, text: "Target Masa Studi Gagal Disimpan.", icon: "error", dangerMode: false, }); }); } } });Si no le gusta usar async y esperar palabras clave, le sugiero esta solución en su lugar
swal({ title: "Are You Sure ?", text: "Save", icon: "warning", buttons: true, dangerMode: false, }).then((Agree) => { if (Agree) { // Your code let i = 0; function send() { const formData = new FormData(); formData.append("data[id_sp]", sessiondata.i_idunit); formData.append("data[id_point]", 1); formData.append("data[kelompok_jenjang]", datas[i].name); formData.append("data[value]", datas[i].value); axios .post(AppConfig.SaveTarget, formData) .then((res) => { swal({ title: datas.name, text: "Target Masa Studi Berhasil Disimpan.", icon: "success", dangerMode: false, }); }) .catch((err) => { swal({ title: datas.name, text: "Target Masa Studi Gagal Disimpan.", icon: "error", dangerMode: false, }); }) .finally(() => { i++; if (i < arrayLength) { send(); } }); } send(); } });