在public.js中定义了一个方法,想返回res.data
wxCode2Session = function(JSCODE)
{
return uni.request({
url: 'https://api.weixin.qq.com/sns/jscode2session?appid=xxxx&secret=xxxx&js_code='+JSCODE+'&grant_type=authorization_code',
method: 'GET',
networkTimeout:6000,
data: {},
success: (res) => {
return res.data;},
fail: (err) => {
return null;},
complete: () => {}
});
}
在主程序中先引用,然后写个方法wxLogin
import publicJs from '../../common/public.js';
......
wxLogin(e){
this.sysInfo();
uni.login({
provider: 'weixin',
success: function (loginRes) {
console.log(loginRes.authResult);
// 获取用户信息
uni.getUserInfo({
provider: 'weixin',
success: function (infoRes) {
console.log('用户昵称为:' + infoRes.userInfo.nickName);
userInfo = publicJs.wxCode2Session(loginRes.code);
}
});
}
});
},
会出现错误提示userInfo is not defined;at api operateWXData success callback function
4 个回复
newgudi
我也是被这个问题困扰了好久,仔细查阅了官方文档,可以这样解决:
在项目根目录的api目录中,新建一个user.js文件,用来专门处理与用户相关的接口请求。比如现在我要检查用户登录情况:
注意这里就传url和要传给后台的data就好了,不要传seccuss等等那些回调函数,因为只有这样,uni.request才会给你返回Promise对象。
然后在me.vue中这样处理:
8***@qq.com - 湖北技升
用回调,return肯定不行的,这个是异步传输
1***@qq.com
那如何解决呢 我在回调里面调方法就提示这个
2019-04-29 17:05
jtshushu
回复 1***@qq.com: 你好怎么解决呢 我也遇到这个问题了
2019-11-04 15:59
l***@163.com - 世界这么大,老衲还年轻
如果有人遇到这个问题,解决办法是把
改为
或者
错误原因是变量userInfo未定义
8***@qq.com
参考
https://blog.csdn.net/qq_56699365/article/details/129600945