thinkjs之页面跳转同步异步操作

  

对于刚入手thinkjs项目的新手来说,时常会犯的一个错误就是“混”用各种代码逻辑,比如:我们经常在做后台管理系统的时候用到的登录框,

  

 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>      

页面效果:

  

 thinkjs之页面跳转同步异步操作

  

而正常的后台处理逻辑也便是:

        使用严格的;   /**   *作者: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之页面跳转同步异步操作