我有一个带有一些输入和选择字段的表单来获取用户数据。我想通过提交按钮的处理程序发送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
获取这些表单数据?
答案 0 :(得分:2)
您似乎没有为您告知服务器期望的内容类型发送正确的正文格式,因此无法解析数据。
试试这个(客户端)
xhr.setRequestHeader('Content-type', 'application/json')
xhr.send(JSON.stringify(data))