为什么 XMLHttpRequest 请求正文返回 null?

阿姆里特·桑吉夫

我正在尝试向我的服务器发送一个“POST”XMLHttpRequest,该服务器使用 express。 服务器能够接收请求,但请求的正文为空。

在服务器上我收到它:

app.post('/', function(req, res){
    res.send(req.statusCode);
    console.log(req.body);
})

我认为它没有问题,因为许多消息来源说这是接收请求的好方法。

这是我的客户端代码:

const user = {
    'Key' : 'user',
    'Name' : 'user',
    'Email' : '[email protected]',
    'Password' : 'password'
}

const jsonFileRequest = new XMLHttpRequest();
jsonFileRequest.open('POST', '/', true);
jsonFileRequest.setRequestHeader('Content-Type', 'application/json');

jsonFileRequest.onreadystatechange =  function(){
    console.log(`userStatus : ${jsonFileRequest.readyState},\nstatus: ${jsonFileRequest.status}`);
    if(jsonFileRequest.readyState == 4 && jsonFileRequest.status == 200)
    {
        console.log(`userStatus : ✅,\nstatus : ✅`);

    }
}
jsonFileRequest.send(JSON.stringify(user));

**这是我的服务器端代码:**

const express = require('express');
const app = express();
const port = 8080;

app.get('/', (req, res) => {
    res.sendFile(__dirname + '/frontend/index.html');
    app.get('/index.html.js', (req, res) => {
        res.sendFile(__dirname + '/frontend/index.html.js');
    })
    app.get('/data.json', (req, res) => {
        res.sendFile(__dirname + '/data.json');
    })
})
app.post('/', function(req, res){
    res.send(req.statusCode);
    console.log(req.body);
})
app.listen(port);
console.log(`listening on http://localhost:${port}`);

请你帮助我好吗?谢谢!

错配

您应该尝试使用express.json()中间件。禁用时(默认情况下),req.body返回未定义。

您可以查看express文档以获取更多信息:

请求正文

包含在请求正文中提交的数据键值对。默认情况下,它是未定义的,并且在您使用诸如 express.json() 或 express.urlencoded() 之类的正文解析中间件时填充。

见:https ://expressjs.com/en/api.html

为您的快速服务器使用以下代码段应该可以工作:

// Importing the express module
var express = require('express');

// Initializing the express and port number
var app = express();
var PORT = 3000;

// Calling the express.json() method for parsing
app.use(express.json());

// Reading content-type
app.post('/', function (req, res) {
   console.log(req.body.name)
   res.end();
})

// Listening to the port
app.listen(PORT, function(err){
   if (err) console.log(err);
   console.log("Server listening on PORT", PORT);
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章