javascript - 使用 Fetch 提交多个 formData 对象
问题描述
我正在创建一个竞赛表格,用户可以在其中提交多个代码。每个代码都是一个新条目
目前,我正在遍历每个代码,扩充formData
对象,然后使用 fetch 将其发送出去。但是,这看起来很混乱——而且我也无法轻松检查它是成功还是失败(我想这样做以更改 HTML 视图)。
如何将这些组合到一个 fetch 执行中,然后清楚地查看它是失败还是成功?
//loop through codes and submit one entry each.
let codes = document.querySelectorAll(".code-row");
for (var i = 0; i < codes.length; i++) {
let uniqueCode = codes[i].querySelector('input').value;
let currentSubmission = new FormData(form);
currentSubmission.set('code', uniqueCode);
console.log('processing entry ' + i);
fetch(scriptURL, { method: "POST", body: currentSubmission })
.then((response) => console.log("Success!", response))
.catch((error) => console.error("Error!", error.message));
}
解决方案
虽然我认为您不能在一篇文章中发送多个 formData 对象,但您可以使用Promise.all()
. 这是我修改后的代码:
let codes = document.querySelectorAll(".code-row");
const promises = [];
for (var i = 0; i < codes.length; i++) {
let uniqueCode = codes[i].querySelector('input').value;
let currentSubmission = new FormData(form);
currentSubmission.set('code', uniqueCode);
let promise = fetch(scriptURL, { method: "POST", body: currentSubmission });
promises.push(promise);
}
Promise.all(promises).then((response) => console.log("Success!", response))
.catch((error) => console.error("Error!", error.message))
推荐阅读
- javascript - 将 data-* 属性添加到 jquery 数据表
- ruby-on-rails - 在 Spec 中测试 Rails 模型,如何创建高效的示例?
- xml - findnodes 找不到给定的路径
- json - 执行 segue swift 4
- javascript - 从两点经纬度旋转 div 线
- python - 如何正确获取python类型的变量?
- javascript - 如何在 javascript 中创建删除/删除功能按钮?可以删除元素的按钮
- python - 假设符号在 SymPy 中具有整数值
- javascript - 添加主屏幕图标以创建反应应用程序时遇到问题
- c# - 具有多个 DbContext 的 Code First 自动迁移