У меня проблемы с отправкой данных формы на мой локальный сервер NodeJS Express.Я считаю, что это как-то связано с тем, как я форматирую свой запрос.Я пытаюсь зарегистрировать новую учетную запись пользователя в базе данных Postgresql, используя Passport в качестве промежуточного программного обеспечения, хотя я не верю, что код когда-либо делает это так далеко.
Вкладка Chrome DevTools Network дает мне дополнительную информацию о неверном запросе {"status": "Невозможно прочитать свойство 'длина' из неопределенного"}
Когда пользователь нажимает кнопку "Создать учетную запись", этот код срабатывает:
processForm(event) {
// prevent default action. in this case, action is the form submission event
event.preventDefault();
// create a string for an HTTP body message
const name = encodeURIComponent(this.state.user.name);
const email = encodeURIComponent(this.state.user.email);
const password = encodeURIComponent(this.state.user.password);
const formData = `name=${name}&email=${email}&password=${password}`;
// create an AJAX request
const xhr = new XMLHttpRequest();
xhr.open('post', '/auth/register');
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.responseType = 'json';
xhr.addEventListener('load', () => {
if (xhr.status === 200) {
// success
// change the component-container state
this.setState({
errors: {}
});
// set a message
localStorage.setItem('successMessage', xhr.response.message);
this.setState({redirect: true});
} else {
// failure
const errors = xhr.response.errors ? xhr.response.errors : {};
errors.summary = xhr.response.message;
this.setState({
errors
});
}
});
xhr.send(formData);
}
Chrome DevTools мигает 'xhr.send (formData) 'как первая ошибка в стеке.
Это код экспресс-обработчика, но я не думаю, что он когда-либо будет так далеко:
router.post('/register', authHelpers.loginRedirect, (req, res, next)
=> {
return authHelpers.createUser(req, res)
.then((response) => {
passport.authenticate('local', (err, user, info) => {
if (user) { handleResponse(res, 200, 'success'); }
})(req, res, next);
})
.catch((err) => { handleResponse(res, 500, 'error'); });
});
Любая помощь будет принята с благодарностью.Я часами пытался ее устранить.Это похоже на каждое сообщение в стеке.