Я пытаюсь опубликовать форму с использованием JavaScript на конечной точке экспресс-API
import express from 'express';
import path from 'path';
import cookieParser from 'cookie-parser';
import logger from 'morgan';
import dotenv from 'dotenv';
import validator from 'express-validator';
import cors from 'cors';
import indexRouter from './routes/index';
dotenv.config();
const app = express();
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(validator());
app.use(cors());
app.use('/', indexRouter);
export default app;
Вот мой обработчик событий формы
signin_form.addEventListener('submit', e => {
e.preventDefault();
const email = document.getElementById('signin_email').value;
const password = document.getElementById('signin_password').value;
console.log('SIGN IN', email, password);
const body = { email, password };
console.log(body);
const options = {
method: 'POST',
body,
headers: {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/x-www-form-urlencoded',
},
};
fetch(signinEndpoint, options)
.then(response => response.json())
.then(resp => {
console.log('response ', resp);
});
});
Когда я отправляю форму напрямую методом действия, все работает нормально. Но когда я пытаюсь обработать событие отправки самостоятельно, отправленное письмо и пароль всегда возвращают неопределенное.
Я попробовал почти все предложения здесь на SO. Я использовал FormData()
. Когда я регистрирую req.body
на своей консоли, я получаю
'"email"\r\n\r\nperson@gmail.com\r\n-----------------------------3902153292\r\nContent-Disposition: form-data; name="password"\r\n\r\ngaatatra\r\n-----------------------------3902153292--\r\n' }
Если я пытаюсь использовать 'Content-Type': 'application/json'
, браузер выдает cors
жалоб.
Если я использую JSON.stringify(body)
, console.log возвращает { '{"email":"person@gmail.com","password":"taeatertrt"}': '' }
Любая помощь будет оценена.