如何读取从前端发送的JSON字符串

时间:2018-12-13 23:07:58

标签: javascript node.js json express

我有这个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字符串,我可以不经express就能成功读取整个req.read()。

所以这里的问题是:如何读取以下字符串并使用express操作它?

2 个答案:

答案 0 :(得分:1)

如果您有快递服务器,则可以使用正文解析器从请求正文获取数据。

例如:

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');

答案 1 :(得分:1)

您可以使用body-parse来从客户端获取发送的参数。

首先将主体解析下载到您的项目

npm install body-parse --save

然后,您可以使用express编写服务:

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);
});