一個很簡單的驗證碼驗證問題,花費了好長時間

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

驗證碼提交驗證時,當填寫驗證碼錯誤時,提示錯誤不提交。但當填寫驗證碼正確時,頁面中止在原地沒反應。這是什麼緣由呢?剛開始,還覺得多是ajax

 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(); 
   }
相關文章
相關標籤/搜索