javascript - Fetch() 数据未显示在服务器端
问题描述
我正在向我的服务器发送一个简单的 fetch(),如下所示:
eo.put = function (state) {
console.log('PUT:state', state);
let _id = encodeURIComponent(state._id);
const options = {
headers: {'Content-Type': 'application/json'},
method: 'PUT',
body: JSON.stringify(state)
};
fetch("/articles/put/" + _id, options )
.then((response) => {
console.log('RESPONSE', response);
// you need to update the DOM here
})
.catch((error) => {
console.error("DEBUG: fetch/PUT error", error);
});
}
我可以验证状态是否填充了 console.log()。
然而; 在服务器端 req.body 未填充并显示未定义。
// .. snip
app.use('/articles', routes.articles);
// .. snip
// UPDATE OPERATIONS
router.route('/put/:_id').put((req, res) => {
const _id = req.params._id;
const obj = req.body;
/*
**
** req.body is empty
**
*/
debug && console.log('DEBUG: route: /articles/put : req.body', req.body);
DBM.updateArticle(_id, obj).then(() => {
}).catch((err)=>{
res.status(500).send("DEBUG: database internal error", err);
});
res.end();
});
解决方案
很可能您需要添加一个正文解析器
const bodyParser = require('body-parser')
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
// your routes...
推荐阅读
- java - 使用大纲文本字段的工具栏问题
- angular - 有没有一种方法可以显示带有角度材料形式的标签的静态文本,其样式类似于输入,以便它们共享排版?
- r - 如何在 geom_path 中为多个类别添加渐变颜色渐变/更改
- c# - 在运行时获取测试运行类别。在 VSTest 任务中,它被称为 TestFilterCriteria
- reactjs - 云功能无法记录任何内容?
- python - 选择其列值与另一列中的值列表匹配的行
- c# - 如何将两个文本输入传递给 ActionResult 方法
- android - Firebase 未初始化
- python - Django模板将数组传递给输入字段
- javascript - 将 API 请求中的 PDF 下载到 SuiteScript 中的文件柜