在微信小程序开发过程中,如果你完全按照官方文档来,那么恭喜你,90%的可能性你会掉入大坑而且还难以爬起来,有时候明显没有任何问题但是结果就是不对。
今天就来给大家说一下客户端发起post请求时的一个坑。
按照官方文档,我们客户端发起post请求的代码如下:
t:function() {
wx.request({
url: 'https://www.meimichao.com/bee/uploadHandler',
data: {"city":"123"
},
method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
//header: {"Content-Type":"application/x-www-form-urlencoded"}, // 设置请求的 header
success: function(res){
console.log(JSON.stringify(res));
},
fail: function(res) {
console.log(JSON.stringify(res));
},
complete: function() {
// complete
}
})
},
但是你这么写,无论如何在服务器端都是获取不到参数city的值的,始终会报null。这时你只要将post请求改成get请求类型,马上就可以获取到city参数的值了,
客户端改成:
t:function() {
wx.request({
url: 'https://www.meimichao.com/bee/uploadHandler',
data: {"city":"123"
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
//header: {"Content-Type":"application/x-www-form-urlencoded"}, // 设置请求的 header
success: function(res){
console.log(JSON.stringify(res));
},
fail: function(res) {
console.log(JSON.stringify(res));
},
complete: function() {
// complete
}
})
},
服务器端:
非常奇怪的是,我们只要在post请求中加上下面这个请求头,服务器端马上就可以获取到city参数的值了。
header: {"Content-Type":"application/x-www-form-urlencoded"},
对此官方文档是没有任何说明的,只有在你跌入坑了以后你才知道。