简体   繁体   中英

Express.js POST empty req.body

Cannot resolve this issue by simple search. If anyone can make that more clear?

In client I've tried attach object to xhr.send(obj). At the moment trying to append to formData object, result the same while... Client code:

var xhr = new XMLHttpRequest()    
xhr.open("post", "/api/test", true)

var formData = new FormData()
formData.append("hi", "hello")

xhr.send(formData)

xhr.onreadystatechange = function() {
  if (this.readyState != 4)
    return
  if (this.status != 200) return console.error(this.status + this.statusText)
  else console.log(this.responseText) 
}

And on back-end I am trying to get req.body this way:

const express = require('express'),
    app = express(),
    http = require('http'),
    path = require('path'),
    bodyParser = require('body-parser')    

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: false }))

app.use(express.static('public'))

app.get('/', function(req, res) {
  res.sendFile(path.resolve("/public/index.html"))
})

app.post('/api/test', (req, res) => {
  console.log(req.body)
  res.end()
})

Don't see why, but each time I get printed out only empty objects. I've cheked several times front end sends objects.

Appreciate any help.

You can try to add :

//Send the proper header information along with the request
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

Like this express (body parser) understand it have to parse the incoming data.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM