1 问题描述:
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测试接口,发现没有问题,排除;
再然后,求助网络,找了半天没有解决。
最后,查看官方文档,发现如下描述:
出问题就出在这个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