J'appelle une page Web tierce en utilisant jQuery ajax. Selon leur page, ils m'ont envoyé le code d'état 200 si la connexion est réussie et 401 si la connexion échoue. Voici mon exemple de code jquery. Ce code fonctionne très bien sur IE mais ne fonctionne 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 error, success, complete et statusCode. Aucun d'eux ne gère l'erreur 401.
Je pourrais le réparer 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é un délai d'attente car l'erreur 401 n'est jamais revenue. 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.
Ok, il semble que vous utilisez jsonp et je pense que cela pourrait être une limitation de jsonp. Regarde.
On dirait qu'il y a une solution sur le dernier message. J'espère que cela t'aides!