web-dev-qa-db-fra.com

comment console.log le résultat de cet appel ajax?

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

17
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); }
});
11
Qiau

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.

4
Nick

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);

                  }
});
1
Gamul Mijo
$.ajax({
    type: 'POST',
    url: 'loginCheck',
    data: $(formLogin).serialize(),    
    success: function(result){
                console.log('my message' + result);
             }
});
1
nsm

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));
1
Rohit

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é"

0
Jeffery