2013-03-12 3 views
0

Я пытаюсь создать систему, которая проверяет, используется ли выбранное имя пользователя или нет. Я придумал следующий код.php/jQuery проверить, существует ли имя пользователя

function checkUsername(username,func){ 
    $.post("functions/checkUsername.php",{'username': username},function(data){ 
     if(data!='1'){ popup_alert('The username you selected already exists.','Username Exists','Close'); return false; } 
     else{ window[func](); } 
    }); 
} 

checkUsername.php возвращает 0, если имя пользователя существует и 1, если оно доступно. Я провел много тестов. Моя проблема в том, что по какой-то причине она запускает оператор if перед установкой данных. Я вставил предупреждение (данные) перед оператором if, и он всплывает с 1 после создания popup_alert.

+0

Как вы узнали, что он работает, прежде чем данные будут установлены? Вы пробовали оглянуться на FireBug или что-то в этом роде? –

+0

Он не будет работать раньше. Это успешный обратный вызов. Так что это очень неправильное предположение –

ответ

1
function checkUsername(username,callback){ 
    $.post("functions/checkUsername.php",{'username': username},function(data){ 
    callback && callback(data);  
    }); 
} 

... 

checkUsername(username,function(data) { 
    if(data!='1'){ popup_alert('The username you selected already exists.','Username  Exists','Close'); return false; } 
    else{ window[func](); } 
}); 

или вы можете использовать $ .ajax

function checkUsername(username,func){ 
     $.ajax({ 
     type: 'POST', 
     async: false, 
     data: {'username': username}, 
     url: 'functions/checkUsername.php', 
     success: function(data) { 
      if(data!='1'){ popup_alert('The username you selected already exists.','Username Exists','Close'); return false; } 
     else{ window[func](); } 
     }, 
     error: function() { 
      alert('Connection error!'); 
     } 
     }); 
} 
Смежные вопросы