jQuery ajax handle 401 Unauthorized

ajax, jquery, jquery-mobile

Solution

I could fix it as bellow.

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

What I did was added timeout since 401 error never came back. Since it goes to error function even with status code 200 and parsing errors I made it to ignore status 200 inside the error.

Problem

I am calling third party web page using jQuery ajax. According to their page they sent me status code 200 if log-in success and 401 if log-in unsuccessful. Here is my jquery code sample. This code works fine on IE but not work on Chrome or Firefox. What could be the issue? ``` $.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 }); ``` I tried all the functions error, success, complete, and statusCode. None of them handle the 401 error.

Original source