javascript - Javascript - 如何在客户端的XMLHttpRequest后,在服务器端获取FormData值?

146 2

我无法在客户端提交XMLHttpRequest时在服务器端获取FormData值。

如何解析或获取在服务器端提交的FormData值?

这是服务器端代码,我正在使用ExpressJS 。


// Parse request bodies


app.use(express.urlencoded({ extended: false }));



app.post("/products/approved/:id", async (req, res) => {


 console.log(req.body); // I want to get FormData values here


 try {


 const pId = req.params.id;


 await Product.updateOne({pId}, {status:"approved"});


 res.send({message: 'Product has been updated to approved status'});


 } catch(e) {


 res.send({message: e});


 }


});



这是客户端代码,我使用vanilla 。


$(rejectInputBtn).on('click', function(e) {


 e.preventDefault();


 const currentOption = $("#rejection-select option:selected" ).text();


 console.log(currentOption);


 if (currentOption ==="--Please choose an option--") {


 alert('Please select an option!');


 return;


 }


 const id = $(this).parent().parent().parent().find('h2').html();


 const xhr = new XMLHttpRequest();


 xhr.responseType = 'json';



 xhr.open('POST', `/products/rejected/${id}`, true);


 let formData = new FormData(document.getElementById('myform'));


 xhr.send(formData);



 xhr.onload = function() {


 console.log(this.response);


 }


 });



当我在服务器端使用console.log(req.body)时,我一直只能获取到{} , 请帮忙。

时间: 原作者:

91 2

为了访问body,你必须解析它,你应该使用bodyParser。

安装bodyParser


$ npm install body-parser



在app.js中使用它,如下所示:


var express = require('express')


var bodyParser = require('body-parser')



var app = express()



// create application/json parser


var jsonParser = bodyParser.json()



// create application/x-www-form-urlencoded parser


var urlencodedParser = bodyParser.urlencoded({ extended: false })



// POST /login gets urlencoded bodies


app.post('/login', urlencodedParser, function (req, res) {


 res.send('welcome, ' + req.body.username)


})



// POST /api/users gets JSON bodies


app.post('/api/users', jsonParser, function (req, res) {


 // create user in req.body


})



原作者:
...