Подтвердить что ты не робот

JQuery ajax handle 401 Несанкционированный

Я вызываю стороннюю веб-страницу, используя 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
});

Я пробовал все функции error, success, complete и statusCode. Ни один из них не обрабатывает ошибку 401.

4b9b3361

Ответ 1

Я мог бы исправить это как ниже.

$(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 внутри ошибки.