了解FormData()的结构以及如何访问附加键

时间:2014-01-20 14:48:50

标签: jquery form-data

如果我有表格:

<form id="myAjaxUploadForm" enctype="multipart/form-data" method="post" action="/upload">
<input type="file" id="my_img_upload_input" name="my_image">
<input type="submit" value="upload">
</form>

然后我在jQuery ajax请求中创建一个FormData()对象:

var myShinyData = new FormData($("#myAjaxUploadForm")[0]);

1)什么数据结构是myShinyData?数组?

2)如果是这样,在实例化之后,该数组包含的key:values是什么(使用上面的例子)?

3)我在查看了几个demo之后使用了上面的实例化代码,但是它有效,但是0索引引用了什么?表格中的第一个输入字段?

4)如果我随后附加一个key:value

myShinyData.append("username", username);

如何立即提醒username键的值? alert(myShinyData.username)

5)默认情况下是否有任何其他key:value可用于实例化,例如文件名和文件大小,如果是,我该如何访问和提醒他们?

以上信息可能在以下优秀文件中,但我还没有完全提取和理解它:

https://developer.mozilla.org/en-US/docs/Web/Guide/Using_FormData_Objects https://developer.mozilla.org/en-US/docs/Web/API/FormData

1 个答案:

答案 0 :(得分:3)

1)myShinyData将是一个JavaScript对象,这就是为什么可以使用对象编号(.["key"])取消引用它。

2)实例化后,对象将包含表单中每个输入字段的键:值对,其中键将是字段的名称,值将是值。

3)[0]上的$("#myAjaxUploadForm")引用页面本身的实际表单。当您使用jQuery选择对象时,您将获得一个jQuery对象。 jQuery对象是普通DOM对象的包装器,用于公开可以对其执行的其他方法。

$("#myAjaxUploadForm")[0] === document.getElementById("myAjaxUploadForm")

4)是的,如果您将新密钥附加到FormData,您可以使用点表示法或数组表示法访问它:

myShinyData.username
myShinyData["username"]

5)默认情况下可用的信息是表格中的信息;我假设这将包括文件名,但可能需要一些解析。任何其他信息都需要以编程方式获得,要么使用您已有的信息,要么使用其他方法。