一、form 表单提交数据
1、三个专属属性:
action-接口的url地址、
method-get或者post、
enctype-属性指定数据的编码方式为 application/x-www-form-urlencoded(默认值)-只能搭配post一起使用
2、必须设置name属性,值必须和接口的参数名字一致
<form
class="card-body bg-light"
id="addForm"
method="POST"
action="http://www.itcbc.com:3006/api/addbook"
enctype="application/x-www-form-urlencoded"
>二、jQuery的serializez()函数
1、$("表单元素的选择器").serialize()
2、每个表单域必须添加name属性,name属性的值必须和后退接口的参数名称一致,不然无法识别
3、获取的结果是字符串结果:name=value&name=value
4、不能完成文件上传、不能得到禁用状态的值
5、可以获取隐藏域的值
let btnadd = document.querySelector('.btnadd')
btnadd.addEventListener('click', function() {
// 语法:$('表单选择器').serialize()
// 作用:可以收集指定表单中 拥有name属性(还要有属性值)的表单元素的value值,生成key=value&key=value这种格式
// 细节
// 1.表单元素一定要有name属性,name属性的值就是参数的键
// 2.这种方式不能获取文件域的值
// 3.name属性的值一定要和后台接口的参数名称一致
console.log($('#addForm').serialize())
axios({
url: 'http://www.itcbc.com:3006/api/addbook',
method: 'post',
data: $('#addForm').serialize()
}).then(function(res) {
console.log(res)
})
})三、formdata的基本使用
1、获取表单》创建一个formdada》将formdada转换为对象
2、上传文件不要转换类型
let btnadd = document.querySelector('.btnadd')
btnadd.addEventListener('click', function() {
// 收集数据
// 1.获取当前form表单
let myform = document.querySelector('#addForm')
// 2.创建一个formdata,传入指定的表单
let formdata = new FormData(myform)
// 3.将formdata转换为对象
let obj = {}
formdata.forEach(function(value, key) {
obj[key] = value
})
axios({
url: 'http://www.itcbc.com:3006/api/addbook',
method: 'post',
// data:{},
// data:'key=value&key=value'
data: obj
}).then(res => {
console.log(res)
})
})
四、files 只上传文件数据
1、对于文件域,当用户选择好文件之后,会触发change(input)事件
当前用户所选择的文件列表,里面的每一个成员都是file对象,伪数组
let iptFile = document.querySelector('#iptFile')
let form = document.querySelector('form')
iptFile.addEventListener('change', function() {
// files:当前用户所选择的文件列表,里面的每一个成员都是File对象
console.log(iptFile.files[0])
let formdata = new FormData()
// 在formdata中追加文件参数
// formdata.append(后台要求的参数key,文件对象)
formdata.append('avatar', iptFile.files[0])
axios({
url: 'http://www.itcbc.com:3006/api/formdata',
method: 'POST',
data: formdata
}).then(res => {
console.log(res)
})
})五、预览效果
let iptFile = document.querySelector('#iptFile')
let thumb = document.querySelector('.thumb')
// 对于文件域,当用户选择好文件之后,会触发change(input)事件
iptFile.addEventListener('change', function() {
let myform = document.querySelector('form')
let formdata = new FormData(myform)
console.log(formdata.get('avatar'))
// 实现文件预览--本地预览:与服务器没有关系
// 1.获取当前的文件对象:formdata.get('avatar')
// 2.通过文件对象创建一个对应的地址:
// createObjectURL:将文件对象存储到内存,并返回内存的地址
let myurl = URL.createObjectURL(formdata.get('avatar'))
// 3.将地址赋值给img标签的src属性
thumb.src = myurl
axios({
url: 'http://www.itcbc.com:3006/api/formdata',
method: 'POST',
data: formdata
}).then(res => {
console.log(res)
})
})版权声明:本文为weixin_69742797原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。