jQuery Ajax handle 401 non autorisé

j'appelle la page Web de tiers en utilisant jQuery ajax. Selon leur page ils m'ont envoyé le code de statut 200 si log-in succès et 401 si log-in Échec. Voici mon exemple de code jquery. Ce code fonctionne bien sur IE mais pas sur Chrome ou Firefox. Quel pourrait être le problème?

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

j'ai essayé toutes les fonctions d'erreur, succès, complet, et statusCode. Aucun d'eux ne gère l'erreur 401.

20
demandé sur marc_s 2012-04-22 15:48:08

2 réponses

j'ai pu le résoudre comme ci-dessous.

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

ce que j'ai fait a été ajouté temps mort depuis erreur 401 n'est jamais revenu. Puisqu'il va à la fonction d'erreur même avec le code d'état 200 et les erreurs d'analyse, Je l'ai fait pour ignorer l'état 200 à l'intérieur de l'erreur.

10
répondu Prasad Rajapaksha 2012-04-23 01:21:30

Ok, il semble que vous utilisez jsonp et je pense que cela pourrait être une limitation de jsonp. Prendre un coup d'oeil.

http://forum.jquery.com/topic/jquery-ajax-with-datatype-jsonp-will-not-use-error-callback-if-request-fails

on dirait qu'il y a une solution sur le dernier post. Espérons que cette aide!

3
répondu bmurmistro 2012-04-22 12:36:36