3

J'ai besoin d'aide après la connexion de l'utilisateur. J'ai essayé de rediriger la page si les données ont un résultat, mais si je me connecte un email ou un mot de passe incorrect, il redirige toujours la page plutôt que d'alerter une erreur. J'utilise des jetons de l'API en passant.Page de redirection après connexion dans ES6 Récupérer

function loginUser(){ 

fetch('http://example_website.com/api/login', { 
    method: 'POST', 
    headers: {'Content-Type': 'application/json'}, 
    body: JSON.stringify({ 
     email: document.getElementById("email").value, 
     password: document.getElementById("password").value 
    }) 
}) 
.then(data => data.json()) 
.then(data => { 

    if(data){ 
     redirect: window.location.replace("../Sample/home.html") 
    } else{ 
     alert("Invalid Email or Password"); 
    } 
}) 
.catch((err) => { 
    console.error(err); 
}) 

}

function registerUser(){ 

fetch('http://example_website.com/api/register', { 
    method: 'POST', 
    headers: {'Content-Type': 'application/json'}, 
    body: JSON.stringify({ 
     given_name: document.getElementById("given_name").value, 
     last_name: document.getElementById("last_name").value, 
     email: document.getElementById("email").value, 
     password: document.getElementById("password").value, 
     password_confirmation: document.getElementById("confirm_password").value 
    }) 
}) 
.then(data => data.json()) 
.then(data => { console.log(data); 
}) 
.catch((err) => { 
    alert ("Error!"); 
    console.error(err); 
}) 
} 

réponse API valide:

Correct

resopnse API non valide:

Invalid

+0

Lorsque vous déboguez votre code, qu'obtenez-vous dans la variable 'data' dans cette ligne' .then (data => data.json()) 'pour les deux cas authentifiés avec succès ou non – randomguy04

+0

@ randomguy04. J'ai eu la réponse de l'API. Comme si l'utilisateur se connecte correctement, la réponse est une connexion réussie et il a un jeton. Si ce n'est pas le cas, la validation échouera. J'ai essayé d'utiliser console.log (données) pour voir le résultat dans la console du navigateur. Tout vient de l'adresse de connexion – Joseph

+0

pouvez-vous éditer votre question et poster la réponse de l'API lorsque la validation échoue s'il vous plaît? – randomguy04

Répondre

2

Lorsque vous exécutez ce morceau de code

.then(data => { 

    if(data){ //here! 
     redirect: window.location.replace("../Sample/home.html") 
    } else{ 
     alert("Invalid Email or Password"); 
    } 
}) 

data est toujours une valeur truthy, car il est un objet avec le contenu, ce que vous voulez faire, est de valider data.response à la place comme:

.then(data => { 

    if(data.response){ 
     redirect: window.location.replace("../Sample/home.html") 
    } else{ 
     alert("Invalid Email or Password"); 
    } 
}) 
+0

La fonction de registre a également une erreur. J'ai un bouton contextuel. Il ferme la fenêtre contextuelle malgré une erreur et si les champs ne sont pas complètement remplis. J'ai mis "requis" mais toujours aucun effet. – Joseph

+0

vous avez édité la question originale, postez svp une autre question avec le code approprié pour cette erreur spécifique et je serais heureux d'aider – randomguy04

+0

Ok. Pouvez-vous remettre en question ma question. Merci – Joseph