axios的post請求後臺(ThinkPHP5)接收不到數據

最近做vue項目,做分頁的功能,使用post給後臺發送數據,使用接口還是工具(postman)都可獲取數據,唯獨axios獲取不到;經過排除,發現這與axios的post傳參格式有關係;

 this.$axios({
    method: 'post',
    url:url,
    params: {
        seller_id:seller_id
    }
}).then((res)=>{
 
})

在使用axios時,要注意到配置選項中包含params和data兩者,以爲他們是相同的,實則不然。
因爲params是添加到url的請求字符串中的,用於get請求。而data(form-data)是添加到請求體(body)中的, 用於post請求。

解決方法

方法1:

配置如下:
在main.js裏 設置配置,修改Content-Type

import axios from 'axios';
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
Vue.prototype.$axios = axios;

Content-Type須配置爲application/x-www-form-urlencoded,以數據量格式進行數據傳輸(不兼容ie)

方法2:(推薦)

安裝qs,在 main.js裏引入並且對數據進行序列化

import axios from 'axios';
import qs from 'qs';
Vue.prototype.$qs = qs;

或者

import qs from 'qs';
axios.interceptors.request.use((config) => {
    config.data = qs.stringify(config.data);
    return config;
}, function(error) {
    return Promise.reject(error);
});

作者:子恆|haley
博客園:http://www.cnblogs.com/mylly/
版權所有,歡迎保留原文鏈接進行轉載:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章