@evg_96

Почему не приходить тело запроса?

Почему при запросе POST отправляет JSON, но на сервер он не приходит? Приходит пустой объект.

document.querySelector("#publish").addEventListener("submit", event => {
  event.preventDefault();

  const xhr = new XMLHttpRequest();

  xhr.open("POST", "/publish");

  xhr.send(JSON.stringify({
    message: event.target.message.value
  }));

  input.value = "";
}, false);


if (process.env.TRACE) {
  require("./libs/trace");
}

const Koa = require("koa");
const app = new Koa();
const path = require("path");
const fs = require("fs");

let clients = [];

const config = require("config");

const handlers = fs.readdirSync(path.join(__dirname, "handlers")).sort();

handlers.forEach(handler => require("./handlers/" + handler).init(app)); // + koa-bodyparser

const Router = require("koa-router");

const router = new Router();

router.get("/", async (ctx, next) => {
  ctx.body = ctx.render("./templates/index.pug");
});

router.get("/subscribe", async (ctx, next) => {
  const message = await new Promise((resolve, reject) => {
    clients.push(resolve);
  });

  ctx.body = message;
});

router.post("/publish", async (ctx, next) => {
  const message = ctx.request.body;

  console.log(message); // --------------------------------------------------------- {} Пустой объект

  if (!message) {
    ctx.throw(400);
  }

  clients.forEach(resolve => {
    resolve(message);
  });

  clients = [];

  ctx.body = "ok";
});

app.use(router.routes());

app.listen(config.get("port"));
  • Вопрос задан
  • 790 просмотров
Пригласить эксперта
Ответы на вопрос 2
Забыли заголовок отправлять
xhr.setRequestHeader('Content-Type', 'application/json')
Ответ написан
Комментировать
Negwereth
@Negwereth
lvivcss.com.ua
body parser включён?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы