Сервер не распознает JSON, приходящий от клиента.
Из этого поля <input type="text" id="message">
я отправляю данные посредством XMLHttpRequest
:
var xhr = new XMLHttpRequest();
xhr.open("POST", "/publish", true);
var data = JSON.stringify({message: message.value});
xhr.send(data);
Вот что на сервере (использую Express):
var express = require('express');
var app = express();
/* code */
var bodyParser = require('body-parser'); // Использую модуль body-parser
app.use(bodyParser.json()); // для чтения request.body
app.post("/publish", function(req, res){
var msg = req.body.message;
chat.publish(msg);
console.log(msg);
res.send(msg);
});
На клиенте console.log
говорит, что данные из input
превращаются правильно. Т.е. если я введу "something", то строка, которая будет отправляться на сервер, имеет вид {"message":"something"}
.
На сервере console.log
говорит, что undefined
.
НО. Отправляя данные, используя стороннюю утилиту для запросов (Postman), такого же вида {"message":"something"}
, сервер распознает message
.
Что может быть не так?
Body-parser обрабатывает (или не обрабатывает) запросы на основании значения заголовка Content-Type
.
Для JSON запросов этот заголовок должен принимать значение:
Content-Type: application/json
Вот пример того, как можно задать правильное значение этого заголовка на клиенте:
var xhr = new XMLHttpRequest();
xhr.open("POST", "/publish", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify({message: message.value}));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем привет! На сервере(nodejs) есть React который рендрит компоненты и отдает их клиентуЕсли это делать на прямую(nodejs-браузер) то проблем нет
Здравствуйте! Нашел подходящий для себя график на Google Chart, не могу понять как задавать значения даты, нужно выводить числомесяц