在Node Express中提取HTTP帖子不起作用



我只想提取一个http Post,但我没有成功。有人能帮帮我吗?请求是由我的HTML前端使用XMLHttpRequest((发出的,后端是node.js。当我发送请求时,我只得到一个空的Object{}

节点后端

var express = require('express');
const bodyParser = require('body-parser');
var app = express();
app.use(express.json());
app.post('/save_options', (req, res) => {
console.log(req.body);
res.sendStatus(200);
});

前端

let DATA_FRONTEND_OPTIONS = {
"test":"1"
}
function save_options_to_database() {
var do_it_async = true;
var request = new XMLHttpRequest();
request.onload = function () {
var status = request.status;
var data = request.responseText;
}
request.open("POST", "/save_options", do_it_async);
request.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
//request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
request.send(JSON.stringify(DATA_FRONTEND_OPTIONS));
}

只需添加app.use(express.urlencoded());到您的快速配置。

以下是很好的解释:https://stackoverflow.com/a/51844327/8522881

您必须为POST请求添加express.json()express.urlencoded()

示例:

app.use(express.json());
app.use(express.urlencoded());

因为在POST请求中,发送的数据是某种类型的数据对象,您必须告诉服务器接受或存储该类型的数据(对象(,该数据包含在POST请求的主体中。

上面的解决方案也适用于PUT请求。

最新更新