2017-10-22 15 views
3

私はちょっと新しいjQueryです。私は以下のようにjQueryのコードを持っている:jQueryでtrueが返されないreturn

function callfunction() { 
    var email = $("#email").val(); 
    var passwrd = $("#password").val(); 
    $.ajax({ 
    url: "checklogin.php?email="+email+"&pass="+passwrd, 
    type: "post", 
    success: function (response) { 
     if(response == '1') { 
     alert('Login Successfull. Proceed to pay now'); 
     $('#getre').show(); 
     $('#signuplink').hide(); 
     $('#password2').hide(); 
     $('#login').hide(); 
     $('#email').attr('disabled','disabled'); 
     return true; 
     } 
     if(response == '0') { 
     alert('Login Failed !!! Try Again'); 
     return false; 
     } 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     console.log(textStatus, errorThrown); 
    } 
    }); 
} 

とそのHTMLコードは以下の通りです:

<form class='form form-inline' style="margin-top:20px;" method="post" 
action="#"> 
    <input type="text" name="email" id="email" class="amount form-control required" Placeholder="Enter Email ID" required=""> 
    <input type="password" name="password" id="password" class="amount form-control required" Placeholder="Enter Password" required=""> 
    <input type="submit" name="getr" class="mob-btn btn btn-primary btn-info-full" value="Login" onClick="return callfunction()"> 
</form> 

私は私が提出したくないしながら、フォームがデータを提出されたフォームとresponse ==0を提出していますデータはresponse=0です。

これをどのように達成できますか?

+0

あなたはそのようにプログラミングAsynchronusを利用することはできません。 – omerowitz

+0

'$ .ajax'は非同期なので、' callfunction'は応答を受け取る前に戻ります。あなたの唯一の選択肢は、常にfalseを返すようにし、必要な場合に提出をトリガすることです。 – jcaron

答えて

2

送信ボタンの要素からtype="submit"を取り出します。これにより、ajaxリクエストが起動される前にフォームが送信されなくなります。あなたは、AJAXの応答を受信したときに

<input name="getr" class="mob-btn btn btn-primary 
     btn-info-full" value="Login" onClick="callfunction()"> 

あなたがそうのようなform.submit()を呼び出すことができます。

$.ajax({ 
    url: "checklogin.php?email="+email+"&pass="+passwrd, 
    type: "post", 
    success: function (response) { 
    if(response == '1') 
    { 

     $('.form-inline').submit(); 
     alert('Login Successfull. Proceed to pay now'); 

     $('#getre').show(); 
     $('#signuplink').hide(); 
     $('#password2').hide(); 
     $('#login').hide(); 
     $('#email').attr('disabled','disabled'); 
    } 
    if(response == '0') 
    { 
     alert('Login Failed !!! Try Again'); 
    } 

    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     console.log(textStatus, errorThrown); 
    } 
}); 
関連する問題