如何使用for循环迭代formData?

时间:2018-12-09 13:31:43

标签: javascript form-data

我想用js迭代formData很简单。
迭代位于此处的formData对象的示例。
to iterate formData in msdn
我根据示例代码创建了迭代方式。

 
function show()
{
    var formData = new FormData( document.querySelector("#myForm") );
    for(var pair in formData.entries())
    {
        console.log(pair[0]);
        console.log(pair[1]);
    }
} 
ob = document.getElementById("submit");
ob.addEventListener("click",show); 

 
 
<form id="myForm">
<input type="text" name="name">
<input type="text" name="addr">
<input type="button" value="submit" id="submit">
</form>
 
  

要在第一个输入中键入test1,在第二个输入中键入test2,然后单击submit按钮。

chorme控制台中的期望输出

name
test1
addr
test2

Chrome控制台中的实际输出。

n
e

如何修复我的代码以使用for循环迭代formData?

1 个答案:

答案 0 :(得分:2)

您看到ne是因为entires()方法使用next方法返回了一个可迭代对象,并且您正在使用{{1} }循环,用于迭代对象的属性(键)。由于您为表单数据(2)循环了正确的次数,因此for/in循环在该对象中两次以字符串形式遍历键的名称(for/in),两次。 / p>

next

请改为使用文档中显示的console.log(new FormData().entries());循环,该循环将使用for/of方法调用返回的迭代器对象进行迭代。

entries()
function show(){
    console.clear();

    var formData = new FormData(document.querySelector("#myForm"));
    
    for(var pair of formData.entries()){
        console.log(pair[0], pair[1]);
    }
    
    event.preventDefault();    
} 
document.getElementById("submit").addEventListener("click", show);