三亩笨笨 2021-10-09 06:56 采纳率: 100%
浏览 66
已结题

关于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获取不到参数呢?

  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2021-10-09 09:19
    关注

    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);
                });
        }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月17日
  • 已采纳回答 10月9日
  • 创建了问题 10月9日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效