ajax提交表單的一些注意事項:解釋為什么return false卻依然提交


問題原因:
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;
 }

           


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM