問題原因:
1. ajax時return false 的function與onsubmit()不是同一個函數;
2. 在ajax執行時,async默認的設置值為true,這種情況為異步方式,就是說當ajax發送請求后,在等待server端返回的這個過程中,前台會繼續 執行ajax塊后面的腳本,直到server端返回正確的結果才會去執行success,也就是說這時候執行的是兩個線程,ajax塊發出請求后一個線程 和ajax塊后面的腳本(另一個線程)。
原因:邏輯沒弄清楚,要將ajax設置為同步的,需要使用$.ajax,$.get默認是異步的,並且不是在回調函數內return,而是在CheckUserName函數中聲明一個變量來接受回調函數的返回值,然后CheckUserName返回這個值。
var flag=false;
$.ajax({
async:false, ////要設置為同步的,要不CheckUserName的返回值永遠為false
url: "${ctx}/register/registeremail.do",
type: "Post",
data: {"email" : email},
success: function(transport){
if(transport==0){
var html;
document.getElementById("em").style.display="inline";
html="<font color=010203>恭喜您,該郵箱可以注冊!</font>";
$("#em").html(html);
clearError(frm["email"]);
myflag=true;
}else{
addErrors(frm["email"],"對不起!該郵箱已經注冊!");
document.getElementById("em").style.display="none";
flag=true;
}
}
});
// alert(flag + "...郵箱...");
if(flag){
return false;
}