我只想提取一个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请求。