前端ajax请求碰到的一个问题

今天在和服务端联调前端页面,第一个界面就是login页面, 然鹅前端问题很多,一个最脑残的现象就是,点击login之后,跳转出现了问题,跳转到了一个空页面,然后打印了服务端返回的错误信息,所以服务端那边就报问题了。

然后再前端仅仅数行的代码中,去找啊找啊找啊找啊原因,找了很久吧。最后发现了问题所在,就是我用的form表单,登录按钮是button,而它的type类型为submit,这个submit类型点击之后,会提交表单内容。

而同时button通过click,在jQuery.ajax中异步请求服务端进行登录验证,所以导致先进入了表单提交中,而form里面是没有写action的,所以就出现了问题了。

解决办法是,如果是表单的话,里面有button,如果type写成submit的话,那么会提交到表单form标签的action指定内容中去。如果用ajax异步请求的话,那么button的type就改为button好了,或者就不用button,而是用在通过class实现button效果吧。不然带来的问题真是有点坑服务端的同学了。哎。

问题代码:

<form method="post">
      <div class="form-group">
        <label>用户名</label>
        <input type="text" class="form-control" placeholder="请输入用户名" name="username" id="user_login">
      </div>
      <div class="form-group">
          <label>密码</label>
          <input type="password" class="form-control" placeholder="请输入密码" name="password" id="user_password">
     </div>
     .................
     <button type="submit" class="btn btn-success btn-flat m-b-30 m-t-30" id="login-btn">登录</button>
     .............
</form>

改正后代码:

<form method="post">
      <div class="form-group">
        <label>用户名</label>
        <input type="text" class="form-control" placeholder="请输入用户名" name="username" id="user_login">
      </div>
      <div class="form-group">
          <label>密码</label>
          <input type="password" class="form-control" placeholder="请输入密码" name="password" id="user_password">
     </div>
     .................
     <button type="button" class="btn btn-success btn-flat m-b-30 m-t-30" id="login-btn">登录</button>
     .............
</form>

再看jQuery.ajax请求:

   <script type="text/javascript">
        jQuery(document).ready(function($){
            $("#login-btn").click(function(){
                var username = $("input[name=username]").val();
                var password = $("input[name=password]").val();
                alert("username = " + username + " password = " + password);
                $("#tip").hide();

                $.ajax({
                    url : '/admin/login',
                    type : 'post',
                    data : {
                        username: username,
                        password: password
                    },
                    dataType : 'json',
                    success : function(result) {
                        alert("status = " + result.status + " msg = " + result.msg);
                        if (result.status == 0) {
                            window.location.href="/admin/index";
                        }else{
                            $("#tip div").text(result.msg);
                            $("#tip").show();
                        }
                    },
                    error : function() {
                        alert("error");
                        $("#tip div").text("登录请求出错!");
                        $("#tip").show(2000);
                    }
                });
            })
        });
    </script>

使用问题代码,接收到result之后,返回的数据,直接显示在了新窗口中看,因为先执行form中的submit。
使用正确代码,接收result之后,就走了对应的设置tip登录验证错误提示。

到这里,login这样一个简单登录的前端后台验证,就已经差不多调通了,真是脑壳疼。。。。

这样的操作结果才是想要的结果了。入坑了,这个是一个教训吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值