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(); }