这个问题很久前就碰到了,那时候没那心情研究这个,但今天大晚上通宵研究这个问题,百度了一大堆。但是这些回答都是Feces,真的很烦,贴段代码就ok了。把完整代码发出来,让人跑跑,看看是否真的解决了,然后在一堆垃圾中,找答案。
为了解决这个问题,我自己在原有的项目,写了一个demo文件。
讲讲这个问题之所在吧,当我已axios的post送信时,JavaScript发送的数据就一直处理在Java后台得不到值,连方法都没进。一直报这个错误org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported,看控制台的网络也是一直发送GET连接,而在消息头里确是POST连接,这个axios真的垃圾!!!
以下方式都不可实现接收值
axios.post('/userUel', {
param: '1'
}, {
// cancelToken: source.token
})
@ResponseBody
@RequestMapping(value = "/getHobbys", method ={RequestMethod.POST})
public Hobbys getHobbys( @RequestParam(value = "id",required = false) String id){
System.out.println("-----------------------------");
System.out.println("id:"+id);//结果 id:null
}
利用qs.js转json格式来传值,百度上全是这类,没用!
//这是.vue的使用,如果百度.js的方式实现,还是没用,后台得到的值空值
const qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));
mport qs from 'qs';
const data = { 'bar': 123 };
const options = {
method: 'POST',
headers: { 'content-type': 'application/x-www-form-urlencoded' },
data: qs.stringify(data),
url,
};
axios(options)
真实有效,亲测没问题!
var app1=new Vue({
el:'#app1',
id:'1',
created: function (){
this.getHobbysAll(1);
},
methods: {
getHobbysAll: function (id) {
var str = '{"id":23}';
console.log(str);
const params = new URLSearchParams();
params.append('id', '1');
axios.post('http://localhost:8080/getHobbys', params).then(function (response) {
console.log("12345");
console.log(response);
console.assert(response!=null)
var arr = response.data;
console.log(arr)
});
}
}
})
方便你们查阅,证明已解决。
百度云盘:链接:https://pan.baidu.com/s/189rLR36W8fH_evIgL_IQug
提取码:010r