Сервер не распознает 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}));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Всем привет! На сервере(nodejs) есть React который рендрит компоненты и отдает их клиентуЕсли это делать на прямую(nodejs-браузер) то проблем нет
Здравствуйте! Нашел подходящий для себя график на Google Chart, не могу понять как задавать значения даты, нужно выводить числомесяц