关于axios 后台获取不到参数值的问题

前端js:
function saveToDB(json){
alert("saveToDB");
console.log(json);
axios
.post('jsp/test.jsp', {data1:'json',data2:'text'})
.then(function(response){
console.log(response.data);
})
.catch(function (error) { // 请求失败处理
console.log(error);
});
}
后端jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<%=request.getParameter("data1")%>

预期是打印出字符json,但是结果是null,在ff中看,前端参数是被传递过去了的,但为啥jsp获取不到参数呢?

axios.post默认Content-Type为application/json,request.getParameter获取的是键值对,应该设置请求头content-type为application/x-www-form-urlencoded,设置为这个头后,注意传递的data数据要自己组合为键值对字符串或者使用URLSearchParams对象来添加数据

还有题主如果要传递json参数对象,要注意用JSON.stringify转对象为字符串才行
改为下面的代码就没问题了,有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~


    function saveToDB(json) {
        alert("saveToDB");
        console.log(json);
        var data = new URLSearchParams();
        data.append('data1', JSON.stringify(json));
        data.append('data2', 'text');
        //var data = 'data1=' + encodeURIComponent(JSON.stringify(json)) +'&data2=text'//或者用此方式
        axios.post('x.aspx', data, { headers: { 'content-type': 'application/x-www-form-urlencoded' } })
            .then(function (response) {
                console.log(response.data);
            })
            .catch(function (error) { // 请求失败处理
                console.log(error);
            });
    }


在post加个参数,说明提交的是json格式数据

request.getParamter()方法获取的是form-data格式数据,你传递的是json数据。