Успех Ajax всегда запускается в выражении if - PullRequest
0 голосов
/ 12 мая 2019

Я использую Ajax для входа пользователя в систему.
Успешность Ajax всегда будет запускать оператор else, даже если сервер возвращает истинное логическое значение.
В случае, если учетные данные для входа в систему были действительными, оператор else будет выполняться иОшибка входа в систему будет отображаться, но если я обновлю страницу, пользователь войдет в систему.

В основном if(response) никогда не запускается, даже если это true.

$(function(){
    $('#loginButtonIdHead').click(function() {

        $.ajax({
            url: 'localhost/landing/login',
            type: 'POST',
            data: {
                email: $('#defaultForm-email1').val(),
                password: $('#defaultForm-pass1').val()
            },
            success:function(response) {
                if(response){
                    $('#messageId').text("Login Successful");
                } else {
                    $('#messageId').text("Login Failed");
                }
            }
        });

    });
});

1 Ответ

0 голосов
/ 12 мая 2019

В методе $.ajax() используются анонимные функции для успешных вызовов и обратных вызовов. Эту версию легче написать и, вероятно, проще поддерживать:

 $(function(){
  $('#loginButtonIdHead').click(function(){
    $.ajax({
      url: 'localhost/landing/login',
          type: 'POST',
          data: 
          {
            email: $('#defaultForm-email1').val(),
            password: $('#defaultForm-pass1').val()
          }, success:function(response) {
              $('#messageId').text("Login Successful");
          },error: function () {
             $('#messageId').text("Login Failed");
          }
        });
      });
  });

Таким образом, если логин неправильный, вы должны получить статус 403 запрещенный от вызова API login, и это вызовет ответный вызов с ошибкой.
Более того, неправильно выдавать ошибки в статусе 200 success . Поэтому бэкэнд-разработчик должен обновить его до соответствующих статусов.

Спасибо.

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