Мне нужно отправить форму. В настоящее время это работает, если я делаю это в форме HTML, но мне действительно нужно сделать кое-что после этого, поэтому мне нужно сделать это в ответ. Поэтому я использую аксиомы.
Однако, используя axios, я не получаю ответа. Также есть что-то странное, потому что, хотя я делаю почтовый запрос, данные отображаются в браузере в виде строки запроса... Не уверен, что это нормальное поведение.
Вот мой код на стороне сервера:
app.post("/auth/register", async function(req, res, next) {
// some code
// my responses are like res.json("/signup/success");
}
на стороне клиента:
onSubmit(event) {
axios({
method: "post",
url: "/auth/register",
data: {
username: this.state.username,
password: this.state.password,
accountName: this.state.accountName
},
withCredentials: true
}).then(result => {
console.info(result);
});
}
Я запускаю сервер на порту 5000, используя экспресс, и я использовал приложение create-react-app для запуска сервера на порту 3000. Для управления аутентификацией, pass.js.
Я использую http-proxy-middleware для проксирования некоторых конечных точек на экспресс-сервер.
После отправки формы получаю в консоли:
Я занимался этим несколько дней, блуждая по stackoverflow и везде, и я полностью застрял ... Может ли кто-нибудь дать мне подсказку, что я могу сделать?
у него есть прокси-сервер, поэтому нет необходимости указывать порт... в любом случае, я думаю, что нашел решение (что иронично, так как я занимался этим несколько дней, и в тот момент, когда я решил проглотить гордость и попросить о помощи... я достичь цели). Это было... отсутствие event.preventDefault(). Да, глупая ошибка. Глупая ошибка. Я просто еще раз посмотрю и удостоверюсь, что это работает, и я отправлю ответ дальше, чтобы я мог помочь кому-то другому :)





axios.create({
базовый URL: http://localhost:5000/
});
установить baseURL перед отправкой запроса.
Итак, кажется, я нашел свой собственный ответ... Наконец. Спасибо за вашу помощь!
Проблема была довольно простой, довольно глупой. Просто отсутствие «event.preventDefault()». Только это ... Да, называйте меня глупым, я говорил себе это последние часы.
"Глупо" было бы не публиковать ваш вопрос здесь. Написав, вы помогли мне и другим, кто сделал точно такую же ошибку. Разместив сообщение, вы сделали stackoverflow лучшим местом. Хорошего дня!
@ Хосе Педро Соуза, не могли бы вы прояснить причину проблемы? Это все о каком-то событии "нажатие кнопки"? Почему непредотвратимое событие заставляет axios не получать ответ? Иногда я получаю такое же поведение в своем проекте React Native, но нет никаких событий, которые можно было бы предотвратить.)
@VyacheslavOrlovsky, насколько я могу судить, если вы не вызовете preventDefault(), страница немедленно перезагрузится, поскольку это поведение по умолчанию для кнопки отправки. Я не знаю, как это применимо к React Native, поскольку мой опыт работы с RN поверхностен. Надеюсь, это как-то помогло...
@ Хосе Педро Соуза, спасибо за ответ. Понятно, ваш случай, похоже, связан с чистым React только для Интернета. И я уже понял, что мой случай связан с невнимательностью - ошибочная обработка ошибок внутри моего перехватчика ответов Axios приводит к его тихому сбою.
Где вы указываете порт, на который axios должен отправлять запрос?