Как передать данные из Javascript на стороне клиента в node.js с помощью XMLHttpRequest?

У меня есть ввод HTML в моем файле index.html.

<input type = "text" id = "handle" >
<input type = "text" id = "message" >
<button id = "send">send</button>

Когда я заполняю данные и нажимаю «Отправить», я хочу отправить их в свой скрипт узла, где я могу что-то сделать с переданными данными.

Мой сценарий index.html:

$("#send").on("click", function() {
    var message = $("#message").val();
    var handle = $("#handle").val();


    var xhr = new XMLHttpRequest();
    var data = {
        param1: handle,
        param2: message
    };
    xhr.open('POST', '/data');
    xhr.onload = function(data) {
        console.info('loaded', this.responseText);
    };
    xhr.setRequestHeader('Content-Type', 'application/json');
    xhr.send(JSON.stringify(data));

});

И как я пытался получить данные в моем серверном файле test.js.

app.post('/data', function(req, res){

    var obj = {};
    console.info('body: ' + req.body);
    res.send(req.body);

});

В этом случае вывод показывает: тело: undefined

Как я могу отправить данные с моих клиентских страниц на серверную, чтобы я мог использовать их для выполнения других своих операций?

есть ли у вас консольные ошибки в вашем браузере (во внешнем интерфейсе)?

madalinivascu 09.01.2019 07:28

так как вы используете jquery, почему бы не использовать $ .ajax (... также, что ваша конечная точка делает сообщение .. "/ data"? Обычно node.js находится на другом порту вашего обычного сайта, если он не используется родным, также см. : stackoverflow.com/questions/4295782/…

taggartJ 09.01.2019 07:41

Какую версию экспресса вы используете?

wscourge 09.01.2019 07:49

@madalinivascu У меня в настоящее время нет ошибок в интерфейсной консоли.

user7448948 09.01.2019 08:17

@wscourge Сейчас я использую Express v. 6.4.1

user7448948 09.01.2019 08:19

Не могли бы вы вставить всю свою экспресс-конфигурацию? Меня интересуют все ваши звонки по app.use().

wscourge 09.01.2019 08:24
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
2 038
1

Ответы 1

Вам просто нужно использовать парсер тела JSON в Express, например:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;

app.use(express.static('./'));
/* Parse JSON data using body parser. */
app.use(bodyParser.json());

app.post('/data', function(req, res){
    console.info('body: ',  req.body);
    res.send(req.body);
});

app.listen(port);

Просто выполните установку npm для этого модуля, если он еще не установлен:

npm install body-parser

Другие вопросы по теме