axios发送的json怎么变成这个鬼样子,有谁知道怎么解决吗?

发布于 2022-09-06 03:50:38 字数 988 浏览 18 评论 0

clipboard.png

Axios.post('http://localhost:9090/teacher/save',JSON.stringify(this.teacher))
                        .then(res=>{
                            console.log('res=',res)
                        })
                        .catch(err=>{

                        })

clipboard.png

Axios.post('http://localhost:9090/teacher/save',this.teacher, {headers: {"Content-Type": "application/json"}})
                        .then(res=>{
                            console.log('res=',res)
                        })
                        .catch(err=>{

                        })

我设置了application/json,但是从图中可以看出发送的并不是json格式,而是a=&b=这样的格式,是不是哪里配置的有问题

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

南街女流氓 2022-09-13 03:50:38

大家听我说,问题已经解决了,原来我的另外一个文件里面有个axios拦截器,去掉就好了,打扰各位了,不过非常谢谢你们:)

import axios from 'axios'

// //调用Axios请求之前加载
//Axios请求拦截器,随着业务的复杂,Axios层的使用将会越来越复杂,写个精简版的就行了。
// axios.defaults.headers.post['Content-Type'] = 'application/json';
// axios.interceptors.request.use(req => {
//     let data = req.data
//     console.log('befor convert', data)
//     let params = new URLSearchParams();
//     for (let name in data) {
//            params.append(name, data[name])
//     }
//     req.data = params.toString()
//     console.log('after convert', req)
//     return req
// }, error => {
//     return Promise.reject(error)
// })
空心空情空意 2022-09-13 03:50:38
不要用JSON.stringify引入一个qs库,使用qs.stringify

Axios.post('http://localhost:9090/teacher/save',qs.stringify(this.teacher),
    {
headers: {
  'Content-Type': 'application/x-www-form-urlencoded'
}
)
.then(res=>{
    console.log('res=',res)
}).catch(err=>{

})

`
如果服端是试图接受一个JSON字符串用下面的方式

let postdata = {
    params: {
        teacher: json.stringify(this.teacher) //键值名,根据你后台POST接收名来确定
    }
}

Axios.post('http://localhost:9090/teacher/save',qs.stringify(postdata ),
        {
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
    )
    .then(res=>{
        console.log('res=',res)
    }).catch(err=>{
    
    })

`

百变从容 2022-09-13 03:50:38

试试Axios.post('http://localhost:9090/teacher/save',{},JSON.stringify(this.teacher))

请爱~陌生人 2022-09-13 03:50:38

如果确定是'application/json'要传json字符串的话,不需要JSON.stringify直接传对象就行了,axios默认就是传这个,不需要你处理。


你其他地方没做默认设置?比如axios.defaults之类的?
你说默认就是'Content-Type': 'application/x-www-form-urlencoded',我咋感觉是改过默认配置呢?
然后传的时候没做处理的参数明显是做了序列化处理的。。。

久光 2022-09-13 03:50:38

感觉axios期望的数据应该是个object吧,他的解析方式是key:value,所以你传入的字符串会解析成

0: {
1: a
2: b
3:c
4: ...
n: }

应该内部调用了一个对象转query的方法

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文