次のコードでは、ajax呼び出しが機能し、isTaken
が正しく更新されます。しかし、return isTaken
はajax呼び出しが完了する前に実行されるので、常に初期のfalse
設定を返します。 async = true
は非推奨ですので、正しく更新されたisTaken
応答を返す前に、ajax呼び出しが完了するのを待つ方法はありますか?渡されたAJAXを待ちajaxタイミングの問題を伴うjqueryバリデータ
$.validator.addMethod("checkExists",
function (value, element) {
var email = $("#email").val();
var data = {email: email};
var isTaken = false;
$.ajax({
type: "POST",
url: "http://localhost/CFBserver/check_email.php",
data: data,
success: function (response) {
isTaken = (response == 1) ? true : false;
}
});
return isTaken;
},
"This username is already taken! Try another."
);
チェックこれを
さらには、あなたも、あなたのAJAX呼び出しでエラーを処理する代わりに
done
のthen
を使用し、2つのコールバックなどの機能を提供したいと思います:https://jqueryvalidation.org/remote-method/ –