Answer the question
In order to leave comments, you need to log in
Why not come the request body?
Why does a POST request send JSON, but it does not arrive at the server? An empty object arrives.
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"));
Answer the question
In order to leave comments, you need to log in
Forgot to send title
xhr.setRequestHeader('Content-Type', 'application/json')
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question