Как прочитать строку JSON, отправленную с внешнего интерфейса - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть этот html-код

<div id="loginform">
<form class="loginIn" name="loginform">
    <input type="text" name="login">
    <input type="password" name="password">
    <input type="submit" value="Войти">
</form>

<script>
    loginform.onsubmit = function () {
        var formData = new FormData(loginform);
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "/send", true);
        var data = {};
        for(var pair of formData.entries()) {
            data[pair[0]] = pair[1];
        }

        var date = new Date();
        var hours = date.getHours();
        if (hours < 10){
            hours = hours + '0';
        }
        var mins = date.getMinutes();
        if (mins < 10){
            mins = mins + '0';
        }
        var day = date.getDate();
        var month = date.getMonth()+1;

        time = 'Дата: ' + day  + '.' + month + ' | Время: ' + hours + ':' + mins;

        data.LoginTime = time;
        xhr.send(JSON.stringify(data));
    }
</script>

Он формирует строку JSON, которую я успешно смог прочитать в req.read () без express.

Итак, вот вопрос: как мне прочитать следующую строку и оперировать ею с помощью Express?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

вы можете использовать body-parse для получения отправленных параметров от клиента.

сначала загрузите body-parse в ваш проект

npm install body-parse --save

, затем вы можете написать сервис какчто в экспрессе:

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

var app = express();
var router = express.Router();

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

router.post('/send', (req, res)=>{
    console.log( req.body );
    res.send(req.body);
});
0 голосов
/ 14 декабря 2018

Если у вас есть экспресс-сервер, вы можете использовать body-parser для получения данных из тела запроса.

Например:

var bodyParser = require('body-parser');
app.use(bodyParser.json());

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

  console.log( req.body.LoginTime );
  res.send('done'); 
})

Кроме того, ваш HTML-код должен указывать тип содержимого.

xhr.setRequestHeader('Content-type','application/json');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...