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