Как получить на node.js сервере то, что пришло с фронтенда через XMLHttpRequest методом POST?

Для того, чтобы получить данные, переданные с фронтенда через XMLHttpRequest методом POST на Node.js сервере, необходимо сначала настроить сервер для обработки входящих запросов. В качестве примера, я представлю вам простой сервер, использующий Express.js:

1. Установите Node.js и npm (управляющую пакетами для Node.js).
2. Создайте новую папку для вашего проекта и откройте ее в командной строке.
3. Инициализируйте проект, выполнив команду npm init. Это создаст файл package.json, который необходим для управления зависимостями вашего проекта.
4. Установите Express.js, выполнив команду npm install express --save.

После того, как вы настроили свой проект, вы можете создать файл server.js и подключить Express.js:

// Подключаем необходимые модули
const express = require('express');
const bodyParser = require('body-parser');

// Создаем экземпляр приложения Express
const app = express();

// Приложение должно использовать модуль body-parser для обработки тела запроса (параметров POST)
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

// Регистрируем маршрут для обработки POST-запроса
app.post('/api/data', function(req, res) {
  // Получаем данные из тела запроса
  const data = req.body;
  
  // Обрабатываем полученные данные
  // В данном примере просто отправляем их в ответе
  res.json({ success: true, data: data });
});

// Запускаем сервер
const port = process.env.PORT || 3000;
app.listen(port, function() {
  console.log(`Server listening on port ${port}`);
});

В вышеприведенном коде мы подключаем body-parser, чтобы распарсить данные из тела запроса. Затем мы регистрируем маршрут /api/data, который обрабатывает все POST-запросы на этот URL. Внутри обработчика мы получаем данные из req.body и обрабатываем их по своему усмотрению. В данном примере мы просто отправляем полученные данные обратно в виде JSON-ответа.

После того, как вы скопировали вышеприведенный код в файл server.js, выполните команду node server.js в командной строке из папки вашего проекта. Если все настроено правильно, вы должны увидеть сообщение "Server listening on port 3000". Теперь ваш сервер готов к приему POST-запросов.

На фронтенде вы можете отправить POST-запрос на ваш сервер с помощью XMLHttpRequest следующим образом:

// Создаем объект XMLHttpRequest
const xhr = new XMLHttpRequest();

// Устанавливаем метод, URL и асинхронность
xhr.open('POST', '/api/data', true);

// Устанавливаем заголовок Content-Type для отправки данных в формате JSON
xhr.setRequestHeader('Content-Type', 'application/json');

// Устанавливаем обработчик события загрузки
xhr.onload = function() {
  if (xhr.status === 200) {
    // Обработка успешного ответа
    const response = JSON.parse(xhr.responseText);
    console.log(response);
  } else {
    // Обработка ошибки
    console.error(xhr.statusText);
  }
};

// Отправляем данные в виде JSON-строки
const data = { message: 'Hello, server!' };
xhr.send(JSON.stringify(data));

Перед отправкой запроса, установите правильный URL в open() методе, чтобы он совпадал с вашим Node.js сервером. Затем вы можете установить заголовок Content-Type в application/json, чтобы указать, что вы отправляете данные в формате JSON. Наконец, в send() методе вы можете отправить данные в виде JSON-строки.

На Node.js сервере данные, отправленные с фронтенда методом POST через XMLHttpRequest, теперь будут доступны в req.body. Вы можете их обрабатывать по своему усмотрению и выполнять необходимые действия с ними.