1. 程式人生 > >Vue axios發post請求後臺接收不到引數的三種解決方案:

Vue axios發post請求後臺接收不到引數的三種解決方案:

最近用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); }) }