Ajax成功总是在if语句中运行else

时间:2019-05-12 00:02:07

标签: javascript ajax

我正在使用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 :(得分:0)

$.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");
          }
        });
      });
  });

因此,如果登录名不正确,您应该从login api调用中获得 403禁止访问状态,这将调用错误回调。
此外,在 200成功状态下输入错误也不是一个好方法。因此,后端开发人员必须将其更新为适当的状态。

谢谢。