проблема в переменных в jquery - PullRequest
1 голос
/ 25 мая 2010

Я не понимаю, почему я не получаю сообщение, поскольку "имя пользователя уже завершено", если введите имя пользователя, которое уже есть в базе данных.

Если имя пользователя на сервере, то оно возвращает значение как «1», в противном случае пустое, и, несмотря на успешное получение значения с сервера на основе имени пользователя, присутствует или нет, и присвоение значения переменной «x» Я не могу получить сообщение, когда передаю уже существующее имя пользователя. Могу я узнать?

$(document).ready(pageInit);
function pageInit() {
$('#1').bind('blur',go);
}
function go() {
 var value = $('#1').val();
 var x = 0;
 $.post('just.do',{username:value},function(data){
    x = data;

   }
);

 if(x) {
      $('#para').show();
      $('#para').html("Username already exits");
         return false;
  }
 else {
    $('#para').hide();
       return true;
  } 
};

РЕДАКТИРОВАТЬ : Это то, что я делаю в почтовом запросе в сервлетах:

String user1 = request.getParameter("username");  
   if(user != null) {
         String query = "Select * from users where user_name="+"\""+user+"\"";
         b = db.doExecuteQuery(stmt,query);
         if(b) {
          out.write("1");
         }

}

Ответы [ 2 ]

4 голосов
/ 25 мая 2010

Ваш код if(x) ... выполняется до завершения http-запроса, и в результате x никогда не будет установлен при достижении этой части кода.

Вы хотите использовать обратные вызовы:

$.post('just.do',{username:value},function(data) {
   receivedResult(data);
});

...

function receivedResult(x) {
    if(x) {
     ...
    } else {
     ... 
    }
}
2 голосов
/ 25 мая 2010

Вам нужно немного изменить свою функцию go(), например:

function go() {
  $.post('just.do',{username: $('#1').val()},function(data){
    if(data) {
      $('#para').show();
      $('#para').html("Username already exits");
      return false;
    } else {
      $('#para').hide();
      return true;
    } 
  });
}

$.post() - это асинхронная операция, поэтому x=data происходило после вашего if(x) запуска ... вам нужно немного переставить так, чтобы это произошло после возвращения ответа, например работает или вызывается изнутри обратного вызова, как у меня выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...