美文网首页
axios中post请求,后端接收不到参数的问题

axios中post请求,后端接收不到参数的问题

作者: 辣瓜瓜 | 来源:发表于2019-12-22 22:29 被阅读0次

    出现这个问题是因为在使用axios的时候,数据格式不正确的原因
    网上解决方案很多,我依次试了下,只有使用URLSearchParams处理axios发送的数据可以正常请求回来结果,使用qs方案我本地还是不能解决。

    URLSearchParams

    解决方法:

    let param = new URLSearchParams();
        param.append('pageNum', this.pageNo);
        param.append('queryString', this.keyWords);
        console.log(param);
        this.$axios({
            method: 'post',
            url:'/search/goods',
            data:param
        }).then((response)=>{...}
    

    这种方法比较简单,技术文章中普遍提到需要注意: URLSearchParams 不支持所有的浏览器,总体的支持情况还ok,我查了下浏览器兼容情况,普遍支持,发现qq浏览器不支持,但是在我本地测试是没问题的,而且qq浏览器兼容情况是2017年的版本应该是没有更新的缘故。



    使用qs

    主要参考了如下文章得解决方式

    代码如下,但是请求回来的结果无数据,还没找到原因。

      import qs from 'qs';
      import axios from 'axios';
      export default{
        data(){
          return{}
        },
        mounted(){
          this.onLoad()
        },
        methods:{
          onLoad() {
            let postData = qs.stringify({
              "pageNum":1,
              "districtId":3,
              "pageSize":15,
              "queryString":"肉"
            });
            console.log(postData);//pageNum=1&districtId=3&pageSize=15&queryString=%E8%82%89
            axios({
              method: 'post',
              url:'/search/goods',
              headers:{'Content-Type':'application/x-www-form-urlencoded'},
              // transformRequest: [function (data) {
              //   // 对 data 进行任意转换处理
              //   return Qs.stringify(data)
              // }],
              data: postData,
            }).then((response)=>{
              
            })
          }
        }
      }
    

    相关文章

      网友评论

          本文标题:axios中post请求,后端接收不到参数的问题

          本文链接:https://www.haomeiwen.com/subject/zjddtctx.html