#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