2011-11-09 35 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」或「失敗」,這部分工作正常,但是當我打電話check_for_acc(),該更新$("#usr_login_attp")場以下是否每次都無法通過聲明,無論$("#usr_login_attp")的實際值是多少?

這使我瘋狂,任何人都可以看到我在這裏做錯了嗎?

回答

3

是的!你認爲success處理程序將在腳本的其餘部分執行之前執行。這幾乎肯定是不正確的。

登錄成功/失敗的處理需要在回調中發生。一旦你調用check_for_acc(),它會進行Ajax調用 - 但在Ajax調用完成之前不會調用回調。同時,你的代碼快樂地奔跑。

或者,您可以使用jQuery.when()函數爲您包裹一些箍環跳躍。