как отправить POST-запрос и получить ответ без загрузки страницы с помощью NodeJS

#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-запроса вы делаете новый запрос.