不能使用`req.body`来获取express.js中的表单数据

时间:2016-12-28 04:06:22

标签: ajax forms express

我有一个带有一些输入和选择字段的表单来获取用户数据。我想通过提交按钮的处理程序发送ajax调用,以便将用户数据保存到服务器。

这是代码的骨架,

客户方:

xhr.open("POST", "/upload", true)
xhr.onreadystatechange = function() {
  if (xhr.readyState === 4) {
    if (xhr.status === 200) {
      log('ajax succeed')
    } else {
      log('ajax failed')
    }
  }
}
console.log(data) // the data is not empty
xhr.send(data)

服务器端:

import express from 'express'
import bodyParser from 'body-parser'

var app = express()
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))

app.post('/upload', (req, res) => {
  console.log(req.body) // get "{}"
  res.send('greetings from Express!')
})

ajax调用确实到达服务器端点并可以正确地将消息发送回客户端,但为什么我无法从req.body获取这些表单数据?

1 个答案:

答案 0 :(得分:2)

您似乎没有为您告知服务器期望的内容类型发送正确的正文格式,因此无法解析数据。

试试这个(客户端)

xhr.setRequestHeader('Content-type', 'application/json')
xhr.send(JSON.stringify(data))