您的位置:博客首页 >> 程序源码 >> onsubmit校验表单时利用ajax的return false无效问题

onsubmit校验表单时利用ajax的return false无效问题

日志编号:223 发表时间: 2017-10-19 00:30:36 关注次数:571
<form method="post" action="?ac=login" onsubmit="return chk_login();">

  $.ajax({
     type:"GET",//or POST
        url:'/a.php?ac=login&username='+username+'&password='+password+"&"+Math.random(),
        success:function(data){
              if(data=="1"){
                //alert('正确');
            }
            else
            {
             $("#error-msg").text('错误');
             return false;
            }
        }
    }); 


此例中,return false无效,无论用户名密码是否正确均直接提交表单(JS的$("#error-msg").text('错误');不生效的样子)。

两种解决方式:
一、ajax异步导致函数处理不同步,改成:

<form method="post" action="?ac=login" onsubmit="return chk_login();">

var ajaxFlag=true;//用flag的方式,使得子函数$.ajax与主函数check()交互起来  
  $.ajax({
     type:"GET",//or POST
        async:false,//设置同步方式,非异步!  
        cache:false,//严格禁止缓存!  
        url:'/a.php?ac=login&username='+username+'&password='+password+"&"+Math.random(),
        success:function(data){
              if(data=="1"){
                //alert('正确');
            }
            else
            {
             $("#error-msg").text('错误');
           ajaxFlag=false; 
            }
        }
    }); 

if(!ajaxFlag){  
      return false;  
    }  


二、简单暴力:

<form method="post">
<input name="submit" id="login_submit" value=" 立即登录 " type="button" onclick="chk_login();" />

JS部分不改。
本站不提供讨论功能。
本站所有非新闻类文章均为原创,且禁止转载。
本站为了获得更多流量赚取广告费,难免会有以次充好的文章,望见谅,勿鄙视。