原因:
axios 的 headers的 content-type 默認是 “application/json ”,傳給后台的格式是這樣的:
但是后台接收數據的格式一般是表單格式的,就是formdata的數據格式:
所以這時就出現了一種情況,就是前端提交的數據請求接口沒有報錯,但是后台就是接收不到沒有數據返回。
解決方法:
1,和后台商量換數據格式,99.99%是被否決的
2,傳數據之前先把參數轉成formdata數據
let data = new FormData() data.append('id',id) data.append('name',name) //把一個一個字段名和值appen進去,有點麻煩
3,改變axios 的 headers的 content-type 的值
1.application/x-www-form-urlencoded (這個是變成JSON字符串格式)
2.multipart/form-data (這個是formdata格式)
3,application/json (默認的格式)
4,text/xml (這種一般很少用到)
//改變方法,第一種 let ajax=axios.create({ //在新建axios時設置 baseURL:baseUrl, headers:{ 'Content-type': 'multipart/form-data' }, })
//第二種 import axios from 'axios'; //在import之后設置 axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
參考鏈接:axios用post提交的數據格式
wepack 中axios設置代理
//webpakc 配置 proxy: { // agent cross-domain interface "/api": { //代理標識 target: 'http://aaa.com', //要代理的地址 changeOrigin: true, pathRewrite: { "^/api": "" //實際請求時重寫標識,例如實際的請求地址是http://aaa.com/test/user,設置了標識后代理的請求地址是loclahost:8888/api/test/user } } } let ajax=axios.create({ baseURL:/test, //一般這個地方寫的是域名和接口名中間的那部分 }) //請求時 ajax.post('/user') //請求時會自動拼上域名和baseURL http://aaa.com/test/user
參考鏈接:https://segmentfault.com/q/1010000012607105