javascriptajaxfetch-api

Using Fetch API to create a Login form


So, I am making a login form and I have already implemented the fetch API

const form = {
    email: document.querySelector("#signin-email"),
    password: document.querySelector("#signin-password"),
    submit: document.querySelector("#signin-btn-submit"),
    messages:document.getElementById("form-messages")
};
let button = form.submit.addEventListener("click", (e)=> {
    e.preventDefault();
    const login = 'https://ffcc-app.herokuapp.com/user/login';

    fetch(login, {
          method: "POST",
          headers: {
            Accept: "application/json, text/plain, */*",
            "Content-Type": "application/json",
          },
          body: JSON.stringify({
            email: form.email.value,
            password: form.password.value,
          }),
        })
          .then((response) => response.json())
          .then((data) => console.log(data))
          .catch((err) => {
            console.log(err);
           });
    
    
});

I am also getting the desired output: This is my output

The problem is I have to redirect to the main page when 'login successful' else I have to display a message saying 'user does not exist'. how should I do that? What else should I add to my code?


Solution

  • const form = {
      email: document.querySelector("#signin-email"),
      password: document.querySelector("#signin-password"),
      submit: document.querySelector("#signin-btn-submit"),
      messages: document.getElementById("form-messages"),
    };
    let button = form.submit.addEventListener("click", (e) => {
      e.preventDefault();
      const login = "https://ffcc-app.herokuapp.com/user/login";
    
      fetch(login, {
        method: "POST",
        headers: {
          Accept: "application/json, text/plain, */*",
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          email: form.email.value,
          password: form.password.value,
        }),
      })
        .then((response) => response.json())
        .then((data) => {
          console.log(data);
          // code here //
          if (data.error) {
            alert("Error Password or Username"); /*displays error message*/
          } else {
            window.open(
              "target.html"
            ); /*opens the target page while Id & password matches*/
          }
        })
        .catch((err) => {
          console.log(err);
        });
    });
    

    login sucess and error handled by data.error as mentioned in your screenshot šŸ‘‰ https://i.sstatic.net/WJBh2.png