2015-06-14 119 views
1

我想驗證使用jQuery,Ajax和PHP的HTML表單。我在jquery中寫了這個函數,它使用ajax post request來檢查用戶名的可用性。但問題是它總是返回一個false。我是新來的jQuery和JavaScript。我已經嘗試了很多,但我無法弄清楚問題所在。請幫忙。javascript函數總是返回false

function isvalid_username() 
{ 
var username=$('#username').val(); 
var option=false; 
     if(username == "") 
     { 
      $('#username').removeClass('valid').addClass('invalid'); 
      $('#username_feedback').addClass('error').html("Please choose a username!!"); 
      option=false; 
     } 
     else if(username.length < 4) 
     { 
      $('#username').removeClass('valid').addClass('invalid'); 
      $('#username_feedback').addClass('error').html("Your username must be atleast 4 characters."); 
      option=false; 
     } 
     else 
     { 
      $.post('php/check_username_avail.php',{ username : username },function(data){ 

       if(data == "false") 
       { 

        $('#username').removeClass('valid').addClass('invalid'); 
        $('#username_feedback').addClass('error').html("Sorry! That username is already taken. Try a different one."); 
        option= false; 
       } 
       else if(data == "true") 
       { 
        $('#username').removeClass('invalid').addClass('valid'); 
        $('#username_feedback').html(""); 
        alert('Now it should return true'); 
        option=true; 
       } 
       else 
       { 
        $('#username').removeClass('valid').addClass('invalid'); 
        $('#username_feedback').addClass('error').html(data); 
        option=false; 
       } 
      }).error(function(){ 
       alert("An error occurred. Unable to validate username"); 
      }); 
     } 
     return option; 
} 

編輯:我讀過other post。但我仍然沒有找到驗證表單的方法。我想用這與我的代碼提交處理函數:

$('#signup_form').submit(function(event) 
{ 
    if(isvalid_first_name() && isvalid_username() && isvalid_email() && isvalid_password()) 
    { 
    alert('Submitting the form'); 
    } 
    else 
    { 
    event.preventDefault(); 
    $('#submit_feedback').html("Please correct the above problems first"); 
    } 

}); 

如果不能做到這樣,那我應該用什麼樣的技術,來驗證在客戶方的形式?

+0

僅供參考,錯誤'已棄用,使用'失敗' –

+0

好的!完成。也理解我的代碼的問題。但沒有得到解決方案。 – Raman

+0

如果我使用承諾,那麼我應該如何更改我的處理程序,以便表單驗證不受影響? – Raman

回答

0

那麼,因爲你沒有等待AJAX​​完成並立即返回選項,這已經是錯誤的。嘗試下面的代碼。

function isvalid_username(){ 
     var username=$('#username').val(); 
     var option=false; 
     if(username == "") 
     { 
      $('#username').removeClass('valid').addClass('invalid'); 
      $('#username_feedback').addClass('error').html("Please choose a username!!"); 
      return option; 
     } 
     else if(username.length < 4) 
     { 
      $('#username').removeClass('valid').addClass('invalid'); 
      $('#username_feedback').addClass('error').html("Your username must be atleast 4 characters."); 
      return option; 
     } 
     else 
     { 
      $.post('php/check_username_avail.php',{ username : username },function(data){ 

       if(data == "false") 
       { 

        $('#username').removeClass('valid').addClass('invalid'); 
        $('#username_feedback').addClass('error').html("Sorry! That username is already taken. Try a different one."); 
        return option; 
       } 
       else if(data == "true") 
       { 
        $('#username').removeClass('invalid').addClass('valid'); 
        $('#username_feedback').html(""); 
        alert('Now it should return true'); 
        option=true; 
        return option; 
       } 
       else 
       { 
        $('#username').removeClass('valid').addClass('invalid'); 
        $('#username_feedback').addClass('error').html(data); 
        return option; 
       } 
      }).error(function(){ 
       alert("An error occurred. Unable to validate username"); 
      }); 
     } 
} 
+0

您不能從ajax呼叫返回。在jQuery中,這將始終返回承諾界面 –

+0

此代碼不起作用 – Raman