2014-02-10 77 views
-2

我有這段代碼,我想指定validateUser函數是true還是false。我該怎麼做,因爲在代碼中已經有一個函數.post()在jQuery函數中爲true或false

下面是代碼

function validateUser() { 

    var user = $("#username").val(); 

    $.post('usercheck.php', $("#form").serialize(), function (data) { 
     var usercheck = data; 

     if (usercheck != "") { 
      $("#div").html("Username already exists"); 
      return false; 
     } else { 
      $("#div").html("ok"); 
      return true; 
     } 

    }); 
} 
+1

http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call –

+0

你可以讓這個AJAX調用同步。並在函數validateUser作用域內聲明一個變量結果,並在post調用中賦值true或false,然後在post調用返回結果後添加return語句; –

回答

1

問題是,$.post是異步的。所以你需要將回調傳遞給你的validateUser函數。

function validateUser(callback) { 
    var user = $("#username").val(); 
    $.post('usercheck.php', $("#form").serialize(), function(data) { 
    var usercheck = data; 
    if(usercheck != "") { 
     $("#div").html("Username already exists"); 
     callback(false); 
    } 
    else { 
     $("#div").html("ok"); 
     callback(true); 
    } 
}); 

validateUser(function(valid) { 
    if (valid) { 
     alert('The user is valid'); 
    } 
    else { 
     alert('The user is not valid'); 
    } 
}); 
0

不能返回假假真真,因爲jQuery.post異步運行。解決方法是強制post同步運行,但我強烈建議您不要這樣做。

相關問題