1 问题描述:

小程序Required Float parameter ’XXX‘ is not present

2 相关代码:

2.1 后台代码

/获取附近客户列表
    @PostMapping("/wxGetNearClientList")
    public List<Client> getNearClientList
    (@RequestParam Float LONGITUDE,
     @RequestParam Float LATITUDE){
        List<Client> nearClientList=clientService.findNearClient(LONGITUDE,LATITUDE);
        return nearClientList;
    }

2.2 前端代码

//获取用户附近的客户
  viewNearClient:function(){
    var that=this;
    wx.request({
      url: 'http://192.168.174.1:8080/wxGetNearClientList',
      data:{
        'LONGITUDE': this.data.longitude,
        'LATITUDE': this.data.latitude
      },
      method: 'POST',
      dataType:'json',
      success:function(res){
        var clientList=res.data;
        //获取客户信息失败
        if(clientList==null){
          var toastText="获取数据失败";
          console.log(toastText);
          wx.showToast({
            title: toastText,
            icon:'',
            duration:2000
          })
        }
        else{//获取成功,设置地图markers
          console.log("获取客户信息成功!");
          console.log(clientList);
          that.setData({
            markers:clientList
          })
        }
      }
    })
  },

3 解决思路:

首先,考虑是不是前后端传递的参数名称/类型不一致,检查一下,排除;
然后,使用postman测试接口,发现没有问题,排除;
小程序Required Float parameter ’XXX‘ is not present
再然后,求助网络,找了半天没有解决。
最后,查看官方文档,发现如下描述:
小程序Required Float parameter ’XXX‘ is not present
小程序Required Float parameter ’XXX‘ is not present
出问题就出在这个content-type 默认为 application/json上面啊同学们,我们要传递两个Float参数,结果默认给你转换成json格式传递,能不出错吗。

4 解决办法

尝试在wx.request方法里面加入如下字段

header: { 
        'Content-Type': 'application/x-www-form-urlencoded' 
},

5 教训

出了问题好好看官方文档,不要自己乱搞一气,心烦意乱不说,还容易延误工期。
我觉得最坑的就是,你在postman选了post方法,填好了data的参数,Content-Type设置成application/json也并不会出错误,并不明白这是为什么T_T

相关文章: