对于刚入手thinkjs项目的新手来说,时常会犯的一个错误就是“混”用各种代码逻辑,比如:我们经常在做后台管理系统的时候用到的登录框,
其实它原本是有一个路由专门存放自己的代码逻辑,而在点击提交按钮的时候,要达到的效果便是账号密码正确的时候,正常跳转页面,而错误的时候给出提示;为了发现问题,就先把源代码贴出来吧:
& lt; !DOCTYPE html> & lt; html xmlns=" http://www.w3.org/1999/xhtml "比; & lt; head> & lt;元http-equiv=? type”内容=" text/html;utf - 8字符集="/比; & lt; title>用户登录& lt;/title> & lt;/head> & lt; style> *{保证金:0 px;填充:0 px;list-style:没有;} 身体,html{高度:100%;字体:12 px/1.5 \ 96 c5身上\ 8 f6f \ \ 9 ed1,大河马字体,arial,无衬线;} 静态html{背景:url (//img/bg.gif) repeat-x;} 身体{背景:url(/静态/img/ftbg.png) 0底部repeat-x;} .main{背景:url(/静态/img/mbg.png)没有重演中心底部;位置:绝对的,宽度:100%;高度:500 px;: 50%; margin-left: 0; margin-top: -290 px;z - index: 99} .loginbox{宽度:410 px;身高:375 px;背景:url(/静态/img/borderbg.png);位置:绝对的;左:50%;上图:50%;margin-left: -200 px;margin-top: -200 px;border - radius: 8 px; -moz-border-radius: 8 px;-webkit-border-radius: 8 px;z - index: 999;} .loginbg{宽度:310 px;填充:40像素;保证金:0汽车;margin-top: 10 px;background - color: # fff;border - radius: 8 px; -moz-border-radius: 8 px;-webkit-border-radius: 8 px;} .loginbox h4{字体大小:18 px;粗细:正常;颜色:# 333;padding-bottom: 15 px;text-align:中心;} .loginbox输入{宽度:260 px;高度:46 px;边界:1 px固体# dbdbdb;填充:0 5 px;字体大小:14 px;颜色:# 666;border - radius: 5 px rgba (0, 0, 0, 0.5); -moz-border-radius: 5 px;-webkit-border-radius: 5 px;padding-left: 45 px;行高:46 px;} 李.loginbox ul{填充:15 px 0;位置:相对;} .loginbox .user{背景:url(/静态/img/lgicon.png) 0 0不再重演;显示:inline-block;位置:绝对的;宽度:19 px;高度:20 px;左:15 px;上图:27 px;} .loginbox .pwd{背景:url(/静态/img/lgicon.png) 0底不再重演;显示:inline-block;位置:绝对的;宽度:19 px;高度:22 px;左:15 px;上图:27 px;} .loginbox输入。lgbtn{宽度:312 px;background - color: # f86c6b;边界:0 px;颜色:# fff;字体大小:18 px;字体类型:\ 5仙\ 96 c5 f6f \ \ 9 ed1;行高:46 px;text-align:中心;光标:指针;indent: 0 px;填充:0 px;} .main h3 {margin-top: -40 px;字体大小:30 px;text-align:中心;颜色:# fff;粗细:正常;} .footer{:固定;z - index: 9;底部:0 px;text-align:中心;颜色:# 666;宽度:100%;padding-bottom: 20 px;字体大小:14 px;} & lt;/style> & lt; body> & lt; div类=爸饕北? & lt; h3>用户登录& lt;/h3> & lt; div类=發oginbox”比; & lt; div类=發oginbg”比; & lt; h4>用户登录& lt;/h4> & lt;形式id=暗髌怠毙卸?八饕?登录”方法=皃ost”比; & lt; ul> & lt; li> & lt;跨类=坝没А弊4? lt;/span> & lt;输入类型=拔谋尽钡拿?皀ame”要求=" true " value="祝辞& lt;/li> & lt; li> & lt;跨类=" pwd祝辞& lt;/span> & lt;输入type="密码" name=" pwd“required=" true " value="祝辞& lt;跨度id=拔毒痹趝{味精}}& lt;/span> & lt;/li> & lt; li> & lt;输入类型=疤峤弧眝alue=" https://www.yisu.com/zixun/登录”类=發gbtn”/祝辞& lt;/li> & lt;/ul> & lt;/form> & lt;/div> & lt;/div> & lt;/div> & lt; !——& lt; div类=耙辰拧痹谏挛鞲止鹊缱由涛窆煞萦邢薰景嫒ㄋ?016 & lt;/div>——比; & lt;/body> & lt;/html>
页面效果:
而正常的后台处理逻辑也便是:
使用严格的; /** *作者:xxx *创建:2017-02-05 *更新:2017-02-05 *描述:登录控制器 */从“进口基地。/base.js '; 从“进口cf . ./. ./共同/config/config”; 出口的默认类扩展基{ indexAction(){//登录页面//汽车index_index.html渲染模板文件 返回this.display (); }; /** *登录方法 * @returns {*} */异步loginAction () { 让结果=等待this.model (“admin”)。在哪里({名称:this.post () . name, pwd: think.md5 (this.post () .pwd)}) .select (); 如果(result&和结果。长度比;0){ 如果结果[0].state==1) { 让adminrole=等待this.model (adminroles)。({id:结果[0].rids}) .select (); 如果(adminrole&, adminrole [0] .state !=1) { 这一点。分配(“味精”、“该用户的身份已经被禁用或删除,请联系管理员!”); 返回this.display("指数");//错误信息渲染至登录页面 其他}{ 让acresult=等待this.model (“adminaction”)。在哪里({掉:结果[0].rids}) .field(的行动).select();//查询该权限id的集合 结果[0]['行动']=acresult;//把集合赋予会话 等待this.session (cf。sessionKey,结果[0]); 等待this.model (“adminlog”)。添加({uid:结果[0]。.getTime id, createtime:新日期()()/1000,ip: this.ip()})//添加登录日志 返回this.redirect('/主要');//跳转路主要由(主要是修改页面显示url) } 其他}{ 这一点。分配(“味精”、“该用户已经被停用或删除,请联系管理员!”); 返回this.display("指数");//错误信息渲染至登录页面 } 其他}{ 这一点。分配(“味精”、“用户名或密码错误!”); 返回this.display("指数");//错误信息渲染至登录页面 } } /** *退出方法 | * * @returns{承诺| |空白PreventPromise} */异步loginoutAction () { 等待this.session();//清除会话 返回this.redirect(“/?;//跳转登录页面 } }thinkjs之页面跳转同步异步操作