質問: $('#login_pass').val(); $.ajax({ type:'POST', url:'xxx.php', datatype:'json', data:{ transfer_login_username:login_username, transfer_login_pass:login_pass, transfer_login_token:token2 } }) .then( function(data){//success console.log(data); if (data=="succsess") { window.location.href="yyy.php"; } else if(data=="blank"){ $('&nbspメールアドレスとパスワードを記入して下さい').appendTo('.login-errmsgbox'); return false; //A/submitをキャンセル } else if(data=="missing"){ $('&nbspメールアドレスかパスワードに誤りがあります').appendTo('.login-errmsgbox'); return false; //B/submitをキャンセル } }, function(){//pattern fail alert('通信に失敗しました、通信環境を確認してください'); } ) return false;//C/submitをキャンセル }) }) ```
回答: > > 一方で、以下の箇所にreturnをした場合のみ、ページ遷移が止まり、submitがキャンセルされます。 > > > ajaxは非同期で実行されるため、`on('submit'`に登録している関数( `//C`までの部分)が先に終わります。 (その時点で `return false` されていないので通常通りsubmitされる) `//C`でキャンセルして、`then`に登録している関数内の`if`に`else`をつけて、`form`のsubmitをJavaScriptで実行すればよいのでは。