После получения ответа от сервера на AJAX запрос страница клиента перезагружается, хотя не должна

Рейтинг: 0Ответов: 1Опубликовано: 11.04.2023

У меня есть форма на html-странице, куда вводится массив слов через пробел. По нажатию кнопки подтверждения запрос отправляется на сервер через ajax post запрос.

<!DOCTYPE html>
<html lang="ru">
  <head>
    <meta charset="UTF-8">
    <title>Л.р.8</title>
    <link rel="stylesheet" href="main.css">
    <script src="http://ajax.microsoft.com/ajax/jquery/jquery-3.6.0.min.js" 
     type="text/javascript"></script>
  </head>

  <body>
    <form id="message">
        <textarea id="myTextarea"></textarea>
    </form>

    <div class="button">
        <button type='submit' form="message"><p>✔️Отправить</p></button>
        <button type='reset' form="message"><p>❌Сбросить</p></button>
    </div>
  </body>

<script>
    $('#message').submit(function(event) {
    event.preventDefault();

    let textareaValue = $('#myTextarea').val();
    let array = textareaValue.split(/\s+/);
    console.log("Мы получили массив слов: " + array)
    // Дальнейшая обработка данных

    // отправляем данные на сервер
    $.ajax({
      type: 'POST', // метод отправки
      url: 'http://localhost:3000/', // адрес, на который отправляем данные
      data: JSON.stringify(array), // данные, которые отправляем
      contentType: 'application/json',
      success: function(response) {
        console.log(response); // выводим ответ сервера в консоль
      }
    });
  });
  </script>
</html>

На сервере массив принимается и записывается в файл.

const fs = require('fs');
const cors = require('cors');
const express = require('express');
const app = express();

// для парсинга JSON-тела запроса
app.use(express.json());

// разрешаем запросы от других доменов
app.use(cors());

app.use(express.urlencoded({ extended: true }));
app.post('/', (req, res) => {
  let array = req.body;

  // записываем в файл оригинальный массив
  let stringData = array.join('\n');
  fs.writeFile('array.txt', stringData, (err) => {
    if (err) throw err;
    console.log('Данные записаны в файл!');
  });
  res.send('Данные получены и обработаны на сервере');
});

app.listen(3000, () => {
  console.log('Сервер запущен на порту 3000');
});

Проблема заключается в том, что как только приходит ответ сервера на клиентскую сторону, что данные получены и записаны, клиентская страница перезагружается, хотя вроде бы не должна этого делать. Эта проблема появилась сразу как только я добавил сохранение массива в текстовый файл. До этого сервер просто принимал массив и отправлял подтверждение, что всё прошло успешно. Вопрос: как связано сохранение информации в файл на серверной стороне и обновление страницы после этого на клиентской?

Ответы

▲ 0Принят

Дело в том, что и текстовый файл и html-страница находились в одной папке. Именно поэтому когда обновлялся текстовый файл обновлялась и страница html. Решение: поместить их в разные папки.