繁体   English   中英

使用javascript迭代Internet Explorer中的formData对象

[英]Iterating through formData object in Internet Explorer, using javascript

我正在使用表单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?

我发现,从这篇文章开始,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 无法正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM