J'ai la fonction suivante dans le code jQuery:
btnLogin.on('click', function(e,errorMessage){
console.log('my message' + errorMessage);
e.preventDefault();
return $.ajax({
type: 'POST',
url: 'loginCheck',
data: $(formLogin).serialize(),
dataType: 'json'
}).promise();
console.log('my message' + errorMessage);
});
CE QUE JE ESSAIE DE FAIRE: J'essaie de console.log le message d'erreur. Je deviens indéfini si la ligne console.log est au-dessus de la fonction ajax et rien si le fichier console.log est en dessous.
Quelqu'un peut-il me dire comment obtenir la valeur du message errorMessage affiché dans cette nouvelle fonction ou dans une autre?
En outre, tout lien concernant l'utilisation d'Ajax pour vérifier le formulaire de connexion php sera vivement apprécié.
Cordialement, Zoran
Pourquoi ne pas gérer l'erreur dans l'appel?
c'est à dire.
$.ajax({
type: 'POST',
url: 'loginCheck',
data: $(formLogin).serialize(),
dataType: 'json',
error: function(req, err){ console.log('my message' + err); }
});
Vous pouvez essayer quelque chose comme ceci (copié à partir de les exemples jQuery Ajax )
var request = $.ajax({
url: "script.php",
type: "POST",
data: {id : menuId},
dataType: "html"
});
request.done(function(msg) {
console.log( msg );
});
request.fail(function(jqXHR, textStatus) {
console.log( "Request failed: " + textStatus );
});
Le problème avec votre code d'origine est que l'argument d'erreur que vous transmettez à votre fonction on ne vient pas de nulle part. JQuery on ne renvoie pas un deuxième argument et même s'il le faisait, cela concernerait l'événement click et non l'appel Ajax.
essayez quelque chose comme ça:
$.ajax({
type: 'POST',
url: 'loginCheck',
data: $(formLogin).serialize(),
dataType: 'json',
success: function (textStatus, status) {
console.log(textStatus);
console.log(status);
},
error: function(xhr, textStatus, error) {
console.log(xhr.responseText);
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
}
});
$.ajax({
type: 'POST',
url: 'loginCheck',
data: $(formLogin).serialize(),
success: function(result){
console.log('my message' + result);
}
});
Le gestionnaire d'erreurs d'appel Ajax sera déclenché si l'appel échoue.
Vous essayez probablement d’obtenir l’erreur du serveur au cas où les informations de connexion ne seront pas transmises. Dans ce cas, vous devez inspecter l'objet json de réponse du serveur et afficher le message approprié.
e.preventDefault();
$.ajax(
{
type: 'POST',
url: requestURI,
data: $(formLogin).serialize(),
dataType: 'json',
success: function(result){
if(result.hasError == true)
{
if(result.error_code == 'AUTH_FAILURE')
{
//wrong password
console.log('Recieved authentication error');
$('#login_errors_auth').fadeIn();
}
else
{
//generic error here
$('#login_errors_unknown').fadeIn();
}
}
}
});
Ici, "result" est l'objet json renvoyé du serveur qui pourrait avoir une structure comme celle-ci:
$return = array(
'hasError' => !$validPassword,
'error_code' => 'AUTH_FAILURE'
);
die(jsonEncode($return));
Si vous voulez vérifier votre URL. Je suppose que vous utilisez Chrome. Vous pouvez aller à la console chrome et l’URL sera affiché sous "XHR: chargement terminé"