我有这个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操作它?
答案 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);
});