Vue axios發post請求後臺接收不到引數的三種解決方案:
阿新 • • 發佈:2018-12-31
最近用vue做專案使用axios傳送post請求時遇到了前端傳資料後端接收不到的情況:
程式碼:
後來仔細對比ajax發現axios傳值是這樣的:
而ajax傳值是這樣的:
一個Request Payload,一個Form Data。
將Request Payload 轉為Form Data格式就可以了,有三種方式:
一、使用qs
首先在你的專案裡安裝qs模組:
npm install qs --save-dev
然後在需要使用的頁面引入一下:
import qs from 'qs'
引入好了之後,把上面的postData用qs轉一下再發送給後臺就可以了:
let postData = qs.stringify({
phone: this.loginPhone,
password: this.loginPassword
});
axios({
url: ' ',
method: 'post',
data: postData
})
.then (res => {
console.log(res.data);
})
這樣傳送給後臺時就是Format Data格式了。
二、使用FormData
// 基於vue的形式
var form = new FormData();
form.append('name', this.name);
form.append('phone', this.phone);
form.append('sex', this.sex);
form.append('photo', this.img);
form.append ('user_address', this.address);
let config = {
headers: {'Content-Type': 'multipart/form-data'}
}; //新增請求頭
if (this.$refs.person.validate()) {
this.$http.post('url', form, config)
.then(response => {
console.log(response.data);
})
}