最近在处理登录页面样式修改时,发现后台处理用ajaxReturn后的json数据直接在IndexAction上输出,不返回到login.html了。
HTML文件:
1 <button type="button" class="btn btn-warning btn-block" id="btn_login">登录</button>
JS文件
<script> document.onkeydown=function(event){ e = event ? event :(window.event ? window.event : null); if(e.keyCode==13){ $('#btn_login').click(); } }; $(function () { $('#username').focus(); $('#btn_login').click(function(){ var u=$('#username').val(); var p=$('#password').val(); if (u == "") { layer.tips('请输入用户名', '#username', { tips: [2, '#0FA6D8'] //还可配置颜色 }); return false; } if (p == "") { //layer.msg('请输入密码',function(){}); layer.tips('请输入密码', '#password', { tips: [2, '#0FA6D8'] //还可配置颜色 }); return false; } $.ajax({ url: '__URL__/login', type: "post", data:{ 'username':u, 'password':p }, dataType:'json', error:function(){ //layer.msg('无法访问数据库,请检查你的数据库配置',function(){}) }, success:function(data){ if(data.error==0){ location.href=data.url; }else{ layer.tips(data.msg, '#password', { tips: [2, '#0FA6D8'] //还可配置颜色 }); } } }); }); }); </script>
如果将 button的type改为submit,那么就会出现上述问题, 修改type=button就可以正常返回了。
或者使用 event.preventDefault();是阻止表单默认提交事件的,如果去掉那么即使js验证不通过,表单也会提交到控制器。加上这句后只有通过js验证后才会提交到控制器