最近在学习 慕课网 Python Flask 构建微信小程序订餐系统,在 11-3 美食详情和分享功能一节中后端 /member/share 收不到前端 POST 的数据,被该问题卡了两天,总算发现了原因所在,特此记录下来,以供后来者查看。
楼主遇到该问题,刚开始以为是漏掉了视频中某一关键点或者代码编写错漏啥的,前前后后视频又去看了好几遍,一行一行的去比对代码,可 TM 后端 /member/share 始终收不到前端 POST 的数据,奇了怪了(抓狂啊~~~)。所以楼主照着这个思路去百度按照 “小程序转发后端收不到 POST 的数据” 搜索答案,99%的答案都是说把
header: {'content-type': 'application/json'}
换成
header: {'content-type': 'application/x-www-form-urlencoded'}
,可是我的代码里已经是这个了,失败!
于是乎楼主又接着捣鼓代码,看看代码都运行到了哪里?设置了打印数据
console.log("test111")
onShareAppMessage: function () {
var that = this;
console.log("test111")
return {
title: that.data.info.name,
path: '/pages/food/info?id=' + that.data.info.id,
success: function (res) {
console.log("test222")
// 转发成功
wx.request({
url: app.buildUrl("/member/share"),
header: app.getRequestHeader(),
method: 'POST',
data: {
url: utils.getCurrentPageUrlWithArgs()
},
success: function (res) {
console.log("test333")
}
});
},
fail: function (res) {
// 转发失败
console.log("test444")
}
}
}
经过测试发现,Console 只能打印
console.log("test111")
,于是接着搜索 “onShareAppMessage 接收不到 POST 数据”,又过了很久很久,当看到某个帖子的答案时,楼主恍然大悟,发现问题所在了。“分享监听”能力调整官,不再支持分享回调参数 success、fail、complete。至此问题找到了,目前也没什么好的解决方案,我看别人的几种思路:1.分享的回调是取消了,但可以通过 onShareAppMessage 设置个状态,获取到是否分享操作(可以曲线拿到分享事件)。2.通过页面切换出去分享到再次回到页面的时间差大于2秒判定分享成功(不那么可靠,但有什么办法呢)。
最后奉上我的代码,在 onShareAppMessage 返回前发送 POST 请求到后端,目的就是处理分享数据,其他的楼主暂时无能为力,姑且先放之:
onShareAppMessage: function () {
var that = this;
wx.request({
url: app.buildUrl("/member/share"),
header: app.getRequestHeader(),
method: "POST",
data: {
url: utils.getCurrentPageUrlWithArgs()
},
success: function (res) {
}
});
/*
小程序分享接口调整,不再支持分享回调参数 success、fail、complete
https://developers.weixin.qq.com/community/develop/doc/000eacab888a20e8a2579099754401
*/
return {
title: that.data.info.name,
path: '/pages/food/info?id=' + that.data.info.id,
};
}