最近在處理登錄頁面樣式修改時,發現后台處理用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驗證后才會提交到控制器