我正在嘗試向我的服務器發送一個“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}`);
請你幫助我好嗎?謝謝!
uj5u.com熱心網友回復:
您應該嘗試使用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);
});
uj5u.com熱心網友回復:
您將需要一個決議器來處理您發送的資料/正文。默認情況下 express 不決議請求的正文部分。
您可以在快遞服務器中添加這兩行來解決此問題。
app.use(express.json())
app.use(express.urlencoded({ extended: true}));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/458946.html
標籤:表示
上一篇:EventLoop
