使用表单id创建formData对象并执行以下操作:
var formDataDetails = new FormData(document.getElementById("form_id"));
for (var entry of formDataDetails{
res[entry[0]] = entry[1];
}
后来做JSON stringify并进行POST。
但我最近发现'Internet Explorer'不支持for..of
循环。我相信使用for..in
循环是不正确的,因为它用于迭代可枚举对象(循环通过对象的属性)。
我应该如何为Internet Explorer迭代formData?
答案 0 :(得分:0)
我发现,截至本文,IE仍未通过FormData对象在for..of循环中可靠地工作。所以,我的解决方案,当你需要迭代集合时,只需要避免使用FormData。如果您只是使用它来发布表单数据,FormData在IE中运行良好。
如果您需要在发送之前迭代表单的值,您可以像我一样 - 直接使用form.elements集合。
这样的事情:
export function form2Obj(f) {
var elemArray = f.elements;
var formObj = {};
for (var k in elemArray) {
var input = elemArray[k];
if (!input || !input.name || !input.value) continue;
formObj[input.name] = input.value;
// etc, need special handling for inputs of type radio
// checkbox, textarea, and select most likely
}
return formObj;
}
为了记录,我使用webpack编译为ES6。当我在开发模式下编译时,IE可以处理for..of循环。当我在生产模式下编译时,IE 不工作。