我是React中“fetch”命令的新手。我可以用它来获取,但我没有运气用它来POST。我运行以下简单代码。
onSubmit(event) {
// For some reason, "fetch" is GETTING instead of POSTING.
fetch('/questionare/', {
method: 'post',
body: JSON.stringify({greeting: "Hello"})
}).then((res) => alert(res.json));
}
通过以下代码在后端处理POST请求的内容。
router.post('/', function(req, res, next) {
res.json(req.body);
});
因此,Web浏览器应为响应创建一个警告框,这是我在请求中发送的确切内容。这没有发生。我查看了我的服务器日志,并发现没有发出POST请求。 “fetch”函数似乎忽略了“method”参数。它总是“GET”请求,即使我告诉它做“POST”请求。我知道在另一篇文章中,他们说请求中的URL末尾需要有一个斜杠(fetch() doing GET instead of POST on react-native (iOS))。但是,这并非如此。有没有人看到有什么问题?
编辑3-3-2018:
根据建议,我包含了标题。但是,该软件仍然发送GET而不是POST请求。使用“fetch”的代码现在如下。还有什么可能是错的?
onSubmit(event) {
// For some reason, "fetch" is GETTING instead of POSTING.
fetch('/questionare/', {
method: 'post',
body: JSON.stringify({greeting: "Hello"}),
headers: new Headers({
'Content-Type': 'application/json',
'Accept': 'application/json'
})
})
.then(res => res.json)
.then(console.log);
}
答案 0 :(得分:0)
您还必须添加headers
,以表明您的内容属于application/json
类型。
fetch('/questionaire', {
method: 'post',
body: JSON.stringify(data),
headers: new Headers({
'Content-Type': 'application/json',
'Accept': 'application/json'
})
})
.then(response => response.json())
.then(console.log)