登录页面中的结果有三个:用户名不对、密码不对、成功登录。对应的是不同的结果。那么这三者要怎么显示是我一直思考的。
(1)首先是在后台与数据库交互方面,要返回什么样的结果,我设置的是不同的数字对应不同的结果,以便于后续在js中的操作:
async manaAction(){
let model = this.model('mana_info');
let name=this.get("name");
let pwd=this.get("pwd");
let data = await model.where({manaName: name}).find();
if(think.isEmpty(data)) {
// 内容为空时的处理
return this.success("2");
}
else{
if(pwd==(data.manaKey)){
return this.success("1");
}
else{
return this.success("3");
}
}
}
这里我开始用了.equals发现报错了,查阅才发现应该用==
(2)小程序端的js文件:
这里有一个问题,就是三种结果怎样显示以及如何去实现。
一开始我的想法是在js中处理后台返回的值,不同的值对应一个url传的参数,然后通过wxml文件跳转,但是现实中如果我们输错了用户名或密码通常只是弹窗提醒,不会跳转,所以这个思路行不通
然后我的思路转变为错误的话有弹窗提醒,正确的话直接跳转,首先我想到的是在wxml页面里引用js代码,但是显然这样太麻烦。所以我搜索了一下怎样在js文件中加弹窗和跳转,搜到了 wx.showModal以及wx.navigateTo ,使用这两者成功的解决了问题
参考:这是wx.navigateTo
https://blog.csdn.net/qq_38822390/article/details/84971401
这是wx.showModal
https://www.cnblogs.com/xinzaiyuan/p/12049865.html
下面是js的核心代码:
getCons: function () {
wx.request({
url: 'http://127.0.0.1:8360/home/chap/mana',
data: {
name: this.data.manaName,
pwd: this.data.manaKey
},
success: function (res) {
//获取相应结果
var result = res.data.data;
console.info(result)
if (result == 1) {
//如果查询成功则跳转
wx.navigateTo({
url: '../write/write'
})
}
else {
//查询失败则弹出窗口
if (result == 2) {
console.info("1")
wx.showModal({
title: '出错了',
content: '用户名不存在',
showCancel: false,//是否显示取消按钮
cancelColor: 'skyblue',//取消文字的颜色
confirmColor: 'skyblue',//确定文字的颜色
success: function (res) {
if (res.cancel) {
//点击,默认隐藏弹框
}
},
fail: function (res) { },//接口调用失败的回调函数
complete: function (res) { },//接口调用结束的回调函数(调用成功、失败都会执行)
})
}
else {
console.info("1")
wx.showModal({
title: '出错了',
content: '请仔细检查您的密码',
showCancel: false,//是否显示取消按钮
cancelColor: 'skyblue',//取消文字的颜色
confirmColor: 'skyblue',//确定文字的颜色
success: function (res) {
if (res.cancel) {
//点击,默认隐藏弹框
}
},
fail: function (res) { },//接口调用失败的回调函数
complete: function (res) { },//接口调用结束的回调函数(调用成功、失败都会执行)
})
}
}
}
})
}