Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

jQuery ajax handle 401 Unauthorized

Tags:

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.

like image 221
Prasad Rajapaksha Avatar asked Apr 22 '12 11:04

Prasad Rajapaksha


People also ask

How to handle 401 error in AJAX call?

Try changing your request type from GET to HEAD, and console. log the returned result to see what status code is actually set in the header.

What is ajaxSetup?

Definition and Usage. The ajaxSetup() method sets default values for future AJAX requests.

Can you use AJAX with flask?

In this article, I will show how to use AJAX with Flask, a Python framework, to receive and display the values entered in a form asynchronously. I added the source code that we need at the end of the article.


1 Answers

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.

like image 151
Prasad Rajapaksha Avatar answered Oct 29 '22 15:10

Prasad Rajapaksha