Как проверить результат из поста jquery? - PullRequest
0 голосов
/ 23 августа 2011

HI У меня есть одна функция POST jquery, которую я не могу выполнить правильно, вы можете мне помочь?

function submitlogin() {
    var form = document.login;
    var action = "chk_login";
    $.post("action.php", {
        action: action,
        user: form.user.value,
        pass: form.pass.value
    }, function(data) {
        if (data=="loginok")
            return true;
        else
            return false;
    }
    );
}

Идея состоит в том, что когда моя форма авторизации отправлена, она получает чек от action.php. Моя функция submitlogin должна возвращать ИСТИНА, если пользователь и пароль верны, и ЛОЖЬ, если они ошибочны. Можете ли вы помочь мне решить мою проблему. В настоящее время, когда я устанавливаю оповещение (данные), что он выводит текст из action.php, чтобы соединение было правильным, моя проблема заключается только в получении результата ИСТИНА или ЛОЖЬ из функции post

Ответы [ 2 ]

2 голосов
/ 23 августа 2011

Обратный вызов из запроса ajax не заботится о возвращаемом значении:

$.post("action.php", 
   {
       action: action, 
       user: form.user.value, 
       pass: form.pass.value
   }, 
   function(data)
  { 
      if(data=="loginok") 
          return true; 
      else 
          return false;
  });

Когда вы говорите return true из вашего обратного вызова, в библиотеке jQuery нет ничего, проверяющего это значение. Похоже, что вы пытаетесь в основном сделать проверку формы при нажатии кнопки; Вы путаете модель события с синхронным вызовом.

Что происходит, это:

 -> Call to submitLogin();
     -> Invokes jQuery POST Ajax Method
     -> Immediately exits submitLogin

 -> When the POST request is complete, calls the callback

Что вам нужно сделать, это, вероятно, что-то вроде этого:

function submitlogin() 
{
    var form = document.login; var action = "chk_login";

    $.post("action.php", 
    {
        action: action, 
        user: form.user.value, 
        pass: form.pass.value
    }, 
    function(data)
    { 
        if(data == "loginok")
           $('#myForm').submit();
    });

    return false;
}
0 голосов
/ 23 августа 2011

Прежде всего $.post по своей природе является асинхронным, поэтому функция не будет ожидать его возврата.Во-вторых, вы пытаетесь вернуть true / false из обработчика успешных сообщений, что неверно.

Вы можете попробовать использовать $ .ajax с async false.

function submitlogin() {
    var form = document.login; var action = "chk_login";
    var returnVal = false;
        $.ajax({ 
           url: "action.php",
           async: false
           data: {action: action, user: form.user.value, pass:  form.pass.value},   
           success: function(data){ 
              returnVal = (data=="loginok"); 
           }
         });

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