2011-11-09 20 views
0

が、これは今いつかのために働くために取得しよう:JQuery/Ajax経由でユーザー名/パスワードを検証する方法は?

<input id="usr_login_attp" value="ok" /> 

function check_for_acc() { 
$("#usr_login_attp").val("ok"); 
jQuery.ajax({ 
    url: "http://localhost:3000/login/validate_user/", 
    type: 'POST', 
    dataType: 'json', 
    data: {'email':$('#user_email').val(), 'password':$('#user_password').val(), 'authenticity_token': jQuery('input[name="authenticity_token"]').val()}, 
    error: function(xhr_data) { 
    //sdfsd 
    }, 
    success: function(xhr_data) { 
    $("#usr_login_attp").val(xhr_data.status); 
    } 
}); 
} 

check_for_acc(); 
if ($("#usr_login_attp").val() == "fail") { 
    err++; 
    errStr += "Email or Password Was Not Recognized<br />"; 
} 

AJAX機能が「OK」または「失敗」のいずれかで$("#usr_login_attp")フィールドを更新して、この部分は、私はcheck_for_acc()を呼び出すしかしたら、[OK]を働いています次の場合、実際の値$("#usr_login_attp")に関係なく、if文が毎回渡されませんか?

これは私を馬鹿にしています、誰かが私がここで間違っているのを見ることができますか?

答えて

3

スクリプトの残りの部分が実行される前にsuccessハンドラが実行されると考えています。それはほぼ間違いです。

ログイン成功/失敗の処理は、コールバック内で実行する必要があります。 check_for_acc()にコールすると、Ajaxコールが作成されますが、コールバックはAjaxコールが完了するまでコールされません。その間、あなたのコードは楽しく実行されます。

また、jQuery.when()関数を使用して、そのフープジャンプの一部をラップアップすることもできます。

関連する問題