Ajax(3)

67 阅读1分钟

FormData

FormData是一个浏览器对象,用于管理表单数据

IE10+支持,可以这样理解,FormData的作用和jQuery中的serialize()作用一样,用于快速收集表单数据,并且可以将创建的FormData对象之间提交给接口。典型应用场景:FormData+Ajax技术实现文件上传

image.png


<body>
    <form action="">
        <input type="text" name="username"><br />
        <input type="password" name="pwd"><br />
        <input type="radio" name="sex" value="nan">
        <input type="radio" name="sex" value="nv"><br />

        <button>提交</button>
    </form>
<script>
//1.获取form标签的DOM对象
let form = document.querySelector('form')
//2.实例话FormData对象,传入form
let fd = new FormData(form)
//3.提交数据
axios.post('/api/formdata',fd).then(result=>{
 console.log(result)
})
//注意,提交FormData对象,不能使用get方式,具体以接口文档为准
</script>
</body>

image.png FormDta和serialize的区别

共同点
1.都需要设置表单各项的name属性
2.都能快速收集表单数据
3.都能够获取到隐藏域(<input type = 'hidden'/>)的值
4.都不能获取禁用状态(disabled)的值
不同点
1.FormDta可以收集文件域<input type = 'file'/>的值,属于原生的代码,serialize是jQuery封装的方法
2.FormDta可以收集文件域<input type = 'file'/>的值,而serialize不能。如果有文件上传,则必须使用FormDta
3.得到的结果的数据类型不一样
//文件域:<input type = 'file'/>
//accept属性可以控制能够选择的文件类型,比如accept='image/png,image/jpeg'
//multiple属性可以控制是否可以多选文件

文件对象

image.png

取得文件对象

image.png 文件对象的作用之一,本地预览

image.png 文件对象的作用之二,追加到FormData,实现文件上传

image.png 常见的http响应状态码

image.png

image.png

image.png