jQuery ajax句柄401未经授权?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (3)
  • 关注 (0)
  • 查看 (135)

我使用jQuery ajax调用第三方网页。根据他们的页面,如果登录成功,他们会向我发送状态码200,如果登录失败,则发送401。这是我的jQuery代码示例。此代码适用于IE,但无法在Chrome或Firefox上使用。可能是什么问题?

$.ajax({
  type: 'GET',
  url: hostURL + 'j_teo_security_check?callback=?',
  dataType: 'json',
  data: ({j_username : $("#inp_user_name").val(), j_password: $("#inp_user_pwd").val()}),
  statusCode: {
      401:function() { alert("401"); },
      404:function() { alert("404"); },
      200:function() { alert("200"); },
      201:function() { alert("201"); },
      202:function() { alert("202"); }
    },
    complete: function(httpObj, textStatus){
    alert(httpObj.status);
  },
  error: function(){
    alert("error");
  },
  async: false
});

我尝试了所有的函数错误,成功,完成和statusCode。他们都没有处理401错误。

提问于
用户回答回答于

$(document).ready(function(){
        $("#cmdLogin").click(function(){             
             var request = $.ajax({
                url : hostURL + 'j_teo_security_check',
                data: ({j_username : $("#inp_user_name").val(), j_password: $("#inp_user_pwd").val()}),
                dataType : "jsonp",
                timeout : 5000
            });

            request.success(function() {
                loginSuccess();
            });

            request.error(function(httpObj, textStatus) {       
                if(httpObj.status==200)
                    loginSuccess();
                else
                    loginFail();
            });
        });
    })

我所做的是添加了超时,因为401错误再也没有回来。由于即使状态码为200并解析错误,它也会出错,所以我忽略了错误中的状态200。

用户回答回答于

题主问题解决了吗,我现在也遇到了同样的问题,Chrome

下status 一直为0

扫码关注云+社区