js变量的运作模式还是没有搞明白,问题如图
verify:function(e){
wx.setStorage({
data: this.data.value,
key: 'username',
})
console.log(this.data.value)
var that = this;
var glodata = getApp().globalData
wx.request({
url: 'http://49.232.88.52/BS-server/VerificationServlet',
method: 'POST',
data:{
username: this.data.value,
loginMethod: 'miniapp'
},
header: {
//设置参数内容类型为x-www-form-urlencoded
'content-type':'application/x-www-form-urlencoded',
'Accept': 'application/json'
},
success: function (res) {
console.log("Verification:",res.data)
if(res.data === true){
glodata.username = that.data.value
console.log("login successfully, username:", that.data.value)
wx.reLaunch({
url: '/pages/main/main',
})
}
}
})
console.log("globalusername:",getApp().globalData.username)
},
再放两张图吧,是一样的代码
问题在124行,想要在全局变量加入一条记录,125行有正确的log,但是133行log显示为undefined
如何正确的跳出代码块为globalData增加记录?
全局引用这样用
在当前页面 js 文件第一行写。
const app = getApp()
调用时候用 app.globalData.xxx
为啥133行是undefined ,因为 wx.request是异步方法,(你可以理解为还没拿到结果,下面就还是处理了)你可以做下简单封装。
----------------------------------------------------------------------
demoajax() {
return new Promise((resolve, reject) => {
wx.request({
url: 'http://49.232.88.52/BS-server/VerificationServlet',
data: {
key: '1111'
},
method: "GET",
success(res) {
if (res.statusCode === 200) {
success && success.apply(this, arguments);
resolve(res.data)
} else {
fail && fail.apply(this, arguments);
reject(res);
}
}
});
});
}
-----------------------------