1

新しいユーザーのサインアップに使用する簡単なフォームがあります。ユーザーが同じメール ID を再度送信できないようにしたい。そのため、フォームが送信される前に、電子メール ID が存在するかどうかを Ajax チェックしたいと考えています。電子メール ID が存在する場合は、ユーザーに警告します。そうでない場合は、フォームを送信します。

$("#sign_in_form").submit(function(event){ 

event.preventDefault();
$.post("http://xyz.com/check_if_user_exists", {
        email : $("#contact_person_email").val()
    }).done(function(data) {

var res = parseInt(data);
if(res==1){

//Email Exists
alert("Email exists . Please use different email " );
return false; //----------------------------1)

}else{
  //Email doesnt exist
return true;   //--------------------------- 2)
}

});

//end of function

});

このコードの問題は、Javascript の非同期性によるもので、結果が ajax post ステートメントから返される前に関数が終了します。したがって、1) および 2) の return false または return true ステートメントは効果がありません。これを処理する正しい方法は何ですか?

4

1 に答える 1

3

チェックが有効な場合、js ネイティブ イベントを使用してフォームを送信します。

$("#sign_in_form").submit(function (event) {

    event.preventDefault();
    $.post("http://xyz.com/check_if_user_exists", {
        email: $("#contact_person_email").val()
    }).done(function (data) {

        var res = parseInt(data);
        if (res == 1) {

            //Email Exists
            alert("Email exists . Please use different email ");

        } else {
            document.getElementById('sign_in_form').submit();
        }

    });

    //end of function

});
于 2013-06-29T13:28:27.490 に答える