Отправка JSON из Client JS, серверные узлы Читается как [объект объекта] - PullRequest
0 голосов
/ 30 апреля 2019

Здравствуйте, я просто пытаюсь получить приветственное сообщение, которое обновляется через POST, и, насколько я могу судить, я отправляю JSON из моего клиентского JavaScript, и на моей стороне NodeJS это отображается как [объектный объект ] Я пробовал req.body, и это возвращает "undefined". Мне интересно, как я могу извлечь свое приветственное сообщение из JSON, который я отправляю на сервер nodejs, и сохранить его в .JSON, чтобы потом можно было извлечь его из клиента.

Я попытался сделать jsonstringify(req), и это возвращает большую ошибку в мой cmd nodejs, который я могу вставить, если это будет необходимо.

nodejs сервер POST, и он будет записывать в файл welcome.json, он будет либо писать [object object], либо undefined, основываясь на том, что я использую req.body или req.

app.post('/update', function (req, res) {
    fs.writeFile(__dirname + '/rqsts/welcome.json', req.body, function () {
        console.log('We got a Post request' + req.body);
    });
});

и вот мой http-запрос на стороне клиента:

function submit() {
    var text_Input = document.getElementById('textinput').value;
    var testing = document.getElementById('testme');
    var welcome_array = {
        welcome: ""
    };
    welcome_array.welcome = text_Input;
    var welcomeJSON = JSON.stringify(welcome_array);
    var url = 'http://localhost:8080/update';
    var http = new XMLHttpRequest();
    http.open('POST', url, false); // false for synchronous request
    Add_Para(welcomeJSON, testing);
    http.send(welcomeJSON);
}

Add_Para - это функция, которую я сделал для устранения неполадок, она добавляет абзац к указанному html с запрошенными данными "welcomeJSON"

Ответы [ 4 ]

1 голос
/ 30 апреля 2019

Если вы используете expres 4.16 или выше, используйте

app.use(express.json());

Нет необходимости использовать bodyParser

0 голосов
/ 30 апреля 2019

Используете ли вы 'body-parser' в express для чтения req.body?

Body-parser поможет вам в извлечении содержимого req.body, перейдите по ссылке ниже для использования в Node JS.https://blog.fullstacktraining.com/how-do-you-extract-post-data-in-node-js/

0 голосов
/ 30 апреля 2019

Здравствуйте, я нашел свое решение, я думаю, что я отсутствовал, в том числе body-parser был главной проблемой, вот мой теперь обновленный код.

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.post('/update', function (req, res) {
    console.log('We got a Post request "%O"', req.body.welcome);
    var now = new Date();
    console.log('Time of change: ' + now.getHours() + ":" + now.getMinutes() + " " + now.getDate() + "/" + now.getMonth() + "/" + now.getFullYear());
    fs.writeFile(__dirname + '/rqsts/welcome.json', JSON.stringify(req.body), function () {
    });
});

на стороне клиента js

function submit() {
    var text_Input = document.getElementById('textinput').value;
    var testing = document.getElementById('testme');
    var welcome_array = {
        "welcome": ""
    };
    welcome_array.welcome = text_Input;
    var welcomeJSON = JSON.stringify(welcome_array);
    var url = 'http://localhost:8080/update';
    var http = new XMLHttpRequest();
    http.open('POST', url, false);
    http.setRequestHeader('Content-type', 'application/json')
    Add_Para(welcomeJSON, testing);
    http.send(welcomeJSON);
}
0 голосов
/ 30 апреля 2019

Попробуйте

console.log('We got a Post request %O', req.body);

Ссылка: https://developer.mozilla.org/en-US/docs/Web/API/Console

Пример:

const a = {
  a: 'a',
};
console.log('We got a Post request %O', a); // We got a Post request { a: 'a' }

Или вы можете попробовать использовать JSON.stringify

Пример:

const a = {
  a: 'a',
};
console.log('We got a Post request ' + JSON.stringify(a)); // We got a Post request {"a":"a"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...