FormData对象用以将数据编译成键值对,以便用XMLHttpRequest来发送数据。其主要用于发送表单数据,但亦可用于发送带键数据(keyed data),而独立于表单使用。
你可以自己创建一个FormData对象,然后调用它的append()方法来添加字段,像这样:
var formData = new FormData();
formData.append("username", "Groucho");
formData.append("accountnum", 12); //数字12会被立即转换成字符串 "12"
// HTML 文件类型input,由用户选择
formData.append("userfile", fileInputElement.files[0]);
想要构造一个包含Form表单数据的FormData对象,需要在创建FormData对象时指定表单的元素。
注意:FormData将仅使用具有name属性的输入字段。
示例:
var formData = new FormData(someFormElement);
<form action="" id='myform'>
<input type="text" name='title'>
<input type="text" name='fdate'>
<input type="submit" value='提交'>
</form>
<script>
document.getElementById('myform').onsubmit=function(){
var rs=new FormData(this);
var xh=new XMLHttpRequest();
xh.open('post','show.php');
xh.send(rs);
return false;
}
</script>
show.php:
<?php
echo json_encode($_POST);
?>
如果你设置正确的配置项,你也可以通过jQuery来使用FormData对象:
var fd = new FormData(document.querySelector("myform"));
fd.append("CustomField", "This is some extra data");
$.ajax({
url: "stash.php",
type: "POST",
data: fd,
processData: false, // 不处理数据
contentType: false // 不设置内容类型
});