bug 产生的环境:因为业务的关系,我司希望已经注册的推广人员才能生成临时的推广二维码。
首次尝试:我们把对于后台找不到注册信息的推广人员 返回Json:
{
"errorCode": 1001
}
这些都没有问题,为了测试有加入推广的情况,我将自己在后台数据设为推广人员
{
"errorCode": 1001, ----------注意,多了这个
"ticket":"nFkUTA---很长",
"expire_seconds":7200,
"url":"http://weixin.qq.com/q/02aTmNp---------T"
}
我其实只传了下边3个参数,当然这个只能说明res变量只是重用,没有申请新内存空间而已,空的属性不会覆盖之前数据
再次尝试,知道变量需要重用以后,我把返回的参数都统一了,只是返回临时二维码的3变量,
如果非推广人员,希望直接通过ticket是否为null直接判断
{
"ticket":"null",
"expire_seconds":0,
"url":"http://weixin.qq.com/"
}
然后,神奇的BUG产生了,
{
"ticket":"null", ------这条永远都是null
"expire_seconds":0, --------下边两条都不受影响,会随着变动
"url":"http://weixin.qq.com/"
}
于是我开始找原因,首先先从我自己服务器的返回值是否正确判断,页面确认已经设置Cache-Control: "no-cache"
数据库日志表里边写入回传的json,自己写了个小工具,证实我服务器的返回数据是正确的。
然后我考虑是不是本地缓存问题,但是清除所有缓存、新建一个小程序、用一部新手机预览,都给我返回"ticket":"null"
种种迹象表明,wx.request 控件有了问题,可以私信我拿具体测试的接口。
request 的 url 加个时间戳呢
问题解决了吗?我也遇到了相同的问题,后端返回结果没问题,但是前端data里第一个字段就是不变
一句话总结:wx.request 返回的结果和实际返回的结果不一样,有缓存之前结果的嫌疑,而且这个缓存还不是在本地,没法清理。