【发布时间】:2017-04-03 08:02:18
【问题描述】:
我有一个表单,它使用 fetch() 到 AJAX,并带有 NodeJS 上的路由。当 AJAX POST 命中路由时,req.body 显示一个空对象 {}。
代码如下:
// 在 app.js 中
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true }));
//在form.js中
form.getElementById('form__option').addEventListener('submit', e => {
e.preventDefault()
const form = $('form')[0]
fetch('/polls/create', {
method: 'POST',
body: new FormData(form)
})
})
// 在 appRoute.js 中
exports.createPost = (req, res, next) => {
console.log('req body', req.body)
res.send('NOT IMPLEMENTED: pollsController createPost');
}
【问题讨论】:
-
你有没有把你的 app.use(...) 放在你的路由定义之前?
-
是的,app.use 都在 app.use(..., router) 之前执行
-
代码似乎正确。您应该从浏览器检查您的请求正文,确保它们是正确的(您可以使用 Chrome DevTool 的“网络”选项卡)。然后尝试添加一个应用程序。使用您的路由器(中间件)的最开始并检查
req.body看看它是否正确