Неперехваченная ошибка типа: Не удается прочитать значение свойства «значение» неопределенного на моей странице регистрации и входа в систему Javascript

#node.js #web-deployment

Вопрос:

У меня есть следующий код JavaScript, и я получаю сообщение об ошибке, в котором говорится:

Неперехваченная ошибка типа: Не удается прочитать свойство «значение» неопределенного»

В частности, в строке: const parola=форма.парола.значение;

 <%- include('partials/header') %>

<form action="/signup">
    <h2>Kullanıcı Oluştur</h2>
    <label for="email">email</label>
    <input type="text" name="email" required/>
    <div class="email error"></div>
    <label for="email">Parola</label>
    <input type="password" name="email" required/>
    <div class="password error"></div>
    <button type="submit">Oluştur</button>
</form>

<%- include('partials/footer') %>

<script>
    const form=document.querySelector('form');

    form.addEventListener('submit',async (e)=>{
        e.preventDefault();

        const email=form.email.value;
        const parola=form.parola.value;
       // console.log(email,parola);

        try {
            const res=await fetch('/signup',{
                method:'POST',
                body:JSON.stringify({email,parola}),
                headers:{'Content-Type':'application/json'}
            });
        } catch (error) {
            console.log(error);
        }


    });
</script> 

Есть какие-нибудь советы?

Комментарии:

1. Вы действительно написали «fatch» вместо «fetch»?

Ответ №1:

вы можете использовать данные формы :

 <form action="/signup">
    <h2>Kullanıcı Oluştur</h2>
    <label for="email">email</label>
    <input type="text" name="email" required/>
    <div class="email error"></div>
    <label for="email">Parola</label>
    <input type="password" name="password" required/>
    <div class="password error"></div>
    <button type="submit">Oluştur</button>
</form>

<script>

function handleSubmit(e) {
  e.preventDefault();
  const formData = new FormData(e.target);
  console.log('Object.fromEntries(formData)', Object.fromEntries(formData));
  return Object.fromEntries(formData); 
}


const form=document.querySelector('form');

    form.addEventListener('submit',async (e)=>{
        var formData = handleSubmit(e);
 
    
        try {
            const res=await fetch('/signup',{
                method:'POST',
                body:JSON.stringify(formData),
                headers:{'Content-Type':'application/json'}
            });
        } catch (error) {
            console.log(error);
        }
 

    });
</script>
 

Рабочая демонстрация : https://jsfiddle.net/cse20x61/3/

Ответ №2:

проблема в том, что это результат document.querySelector HTMLElementObject , поэтому, если вам нужна ваша электронная почта, вы должны сделать это:

 form.querySelector('input[name=email]').value