一个很简单的验证码验证问题,花费了好长时间

本文详细解析了使用Ajax进行验证码提交验证时遇到的问题:当验证码输入正确时,页面未能正常跳转。通过调整函数返回值及处理逻辑,最终解决了页面响应问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 function yzm()
{
//发送POST数据
  ajax.send(postStr); 
  //获取执行状态
  ajax.onreadystatechange = function() {
  //如果执行状态成功,那么就把返回信息写到指定的层里
  if (ajax.readyState == 4 && ajax.status == 200) 
  {
   //msg.innerHTML = ajax.responseText;
   if( ajax.responseText=="error")
   {
     alert("验证码输入错误,请重输!");
     document.getElementById("yzm").value=""; 
     return false;
   }
   else
   { return true;}
   
  }   
  };
  if(ajax.onreadystatechange) //红色部分刚开始未添加
  return true;
}
}

function myformsubmit()
 {
 
  if(yzm())
  {   
    document.form1.submit();
  }
 }

验证码提交验证时,当填写验证码错误时,提示错误不提交。但当填写验证码正确时,页面停止在原地没反应。这是什么原因呢?刚开始,还以为可能是

 document.form1.submit();语句的问题。后来单独实验了一下,发现没问题。找来找去,原来是
ajax.onreadystatechange = function() {……};这个语句导致的里面虽然有 return true; 但是只是传递给了
ajax.onreadystatechange变量,函数 function yzm()并没有返回值(即返回值为空),所以单击时,验证码正确,却出现了页面静止不变的问题。
对于ajax的理解还是比较肤浅,返回值出现了 undefined 情况。
最后为了好处理,还是将提交submit放在yzm函数中处理比较方便
//msg.innerHTML = ajax.responseText;
   if( ajax.responseText=="error")
   {
     Showbo.Msg.alert("验证码输入错误,请重输!");
     document.getElementById("yzm").value=""; 
     return false;
   }
   if(ajax.responseText=="success")
   {
     document.form1.submit(); 
   }

 

 

转载于:https://www.cnblogs.com/imustun/p/9250318.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值