#javascript #html #node.js #ajax
#javascript #HTML #node.js #ajax
Вопрос:
Я хочу отправить post-запрос на мой сервер NodeJS, чтобы обновить документ в моей базе данных и получить ответ, но я не хочу, чтобы страница загружалась, я просто хочу предупредить его, что процесс успешно завершен ….. вот мой код HTML:
<form action="/products/update" method="POST" id="myFrom">
<button type="submit" class="btn btn-success">save</button>
<input type="number" name="productCount">
<input type="text" name="productName">
</form>
JS:
$("#myFrom").submit(function (e) {
$.ajax({
success: function (data) {
console.log(data);
}
});
});
NodeJS:
router.post("/products/update", (req, res) => {
console.log(req.body);
res.status(200).send("success");
});
проблема в том, что когда я нажимаю сохранить, он перенаправляет на /products/update
и вводит в него success, но я хочу, чтобы success был предупреждением на странице редактирования
Комментарии:
1. Кнопка является кнопкой «отправить», поэтому она отправляет форму. Сделайте это
type=button
вместо этого.2. тогда как отправить форму?
3. Ваша собственная функция уже содержит ajax-запрос. Просто сделайте это обработчиком «click» на кнопке. Вам действительно
<form>
это вообще не нужно.4. не могли бы вы показать мне, как это сделать?
Ответ №1:
Пользователь e.preventDefault() отправляет форму без обновления страницы
$("#myFrom").submit(function (e) {
e.preventDefault()
$.ajax({
success: function (data) {
console.log(data);
}
});
});
Комментарии:
1. @fkushgvosvu в вашем
$.ajax()
вызове отсутствуют некоторые вещи, такие как URL и параметры POST.2. они находятся в действии и методе формы
3. то, что @Pointy говорит, что вам нужно включить URL и метод при выполнении ajax-вызова, это немного отличается от отправки html-формы, при выполнении ajax-запроса вы делаете новый запрос.