一、后台接收数据格式formData,但查看network数据格式变为Request Rayload,导致后台接收不到数据
解决方法:
1.设置Content-Type 的值为 application/x-www-form-urlencoded
①可以将其设置为全局header,在main.js中:
axios.defaults.headers.common['Content-Type'] = 'application/json;charset=UTF-8'
Vue.prototype.axios = axios
②在单个请求中设置header:
this.axios({
method:'post',
url:this.API.userpdf,
headers: {
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
},
data: data
}).then(response => {
console.log(response.data)
}).catch((err) => {
console.log(err)
})
2.具体有三种解决方法,如下:
①使用qs
安装
cnpm install qs --save-dev
引入依赖
import qs from 'qs'
使用依赖
let data = qs.stringify({
username: this.username,
password: this.password
})
最后将此data传入后台就是Form Data格式了…
②使用URLSearchParams
let data= new URLSearchParams()
data.append('username', this.username)
data.append('password', this.password)
最后将此data传入后台就是Form Data格式了…
③使用字符串
let data='username=' + this.username+ '&password=' + this.password
三种方法的原理都是将数据转为为字符串传入后台,推荐第一种方法。
二、数据传到后台多了大括号和冒号,如下所示:
将数据转换为JSON数据格式即可,具体使用qs模块和FormData对象,FormData对象的使用如下:
let data = new FormData()
data.append("username", this.username)
data.append("password", this.password)
最后将数据传入后台即可。