小程序项目别的页面初始化拿到的值为两种状态(已解决)

Posted 百撕可乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序项目别的页面初始化拿到的值为两种状态(已解决)相关的知识,希望对你有一定的参考价值。

小程序项目别的页面初始化拿到的值为两种状态,其他页面拿不到app.js全局globalData下全局的cookie

app.js文件

onLaunch: function () {
    console.log(\'app-onLaunch\')
    this.getUserInfo();
   
  },
  onShow:function(){
    console.log(\'app-onShow\')
  },
  // 获取用户信息,登录

  getUserInfo: function (callBack) {
    let that = this;
    if (this.globalData.userInfo) {
      typeof cb == \'function\' && cb(this.globalData.userInfo)
    } else {
      wx.login({
        success: function (res1) {
          console.log(\'res11111111111111111\',res1);
          if (res1.code) {
            //授权
            wx.getUserInfo({
              success: res => {
                // 可以将 res 发送给后台解码出 unionId
                //console.log(\'ryy-getUserInfo\', res.userInfo)
                that.globalData.userInfo = res.userInfo

                wx.request({
                  url: that.config.HOST + \'/user/userLogin.do\',
                  data: {
                    code: res1.code, //返回openid
                    headimgurl: res.userInfo.avatarUrl,
                    nickname: res.userInfo.nickName,
                    city: res.userInfo.city,
                    appid: that.globalData.AppId,
                    province: res.userInfo.province,
                    shop_id: \'10001\',
                  },
                  header: {
                    \'content-type\': \'application/json\'
                  },
                  success: function (res) {
                    console.log(\'tets1\', res)
                    if (res && res.statusCode == 200) {
                      wx.setStorageSync(\'session_id\', res.data.data.session_id)
                      that.globalData.header.Cookie = \'JSESSIONID=\' + res.data.data.session_id;
                      that.globalData.is_vip = res.data.data.is_vip;
                      console.log(\'that.globalData-------------------++++++++++++++++++++\', that.globalData)
                      //console.log(\'that.globalData.header\', that.globalData.header.Cookie)
                      //console.log(\'ryy-qest\' + JSON.stringify(res.data), res.data.data)
                      //有些操作需要登陆之后才能获取,但又是和login验证同时进行的话就需要加入到回调函数
                      if (callBack) {
                        callBack()
                      }
                    
                    }

                  }
                })
              },

 

全局

globalData: {
    userInfo: null,
    openid:null,
    user_id:null,
    code:null,
    header:{Cookie:null},
    session_id:null,
    img_domain:null,
    telephone:null,
    is_vip:null,
    getInit:{},
  },

其他page文件下的index.js页面

 

放在onload或者是其他生命周期内打印不出来cookie,一个是空值,一个是有值的
旁边出来一个感叹号提示:Value below was evaluated just now
但如果打印,console.log(app.globalData.header.Cookie)出来的是null 但是在自定义方法里边比如点击获取验证码里就能够获取到cookie的值

 

————————————————————问题已解决—————2018/4/21/15:10—————————————————————

onLaunch,去掉

this.getUserInfo()的方法
在所需要的页面进行引入,app.getUserInfo(自定义的方法)

 

要了解小程序的生命周期,onLaunch只执行一次,反复执行的话会出现问题。如果需要进行其他操作可以放在callback里边,这里又涉及到了小程序比较恶心的异步了。可以去了解一下小程序生命周期,以及es6的promise

贴下解决代码:

 

 

以上是关于小程序项目别的页面初始化拿到的值为两种状态(已解决)的主要内容,如果未能解决你的问题,请参考以下文章

小程序组件里的数据传递

session的值为空

考研刷题小程序云开发实战-基础知识储备

微信小程序拿到了JSON格式的数据,怎么拿到值并显示在页面上?

小程序 项目介绍

小程序 项目介绍