我正在使用身体解析器并为我的前端做出反应。 我正在尝试创建一个用户;下面是从后端服务器获取数据的前端:
registering (e) {
e.preventDefault()
let form = e.target
let name = form.querySelectorAll('input')[0].value
fetch('http://localhost:5000/createacc', {
method: 'POST',
headers: {'Content-Type':'application/x-www-form-urlencoded'},
mode: 'no-cors',
body: JSON.stringify({name: name})
})
下面的是后端接收部分:
function create (req, res, next) {
console.log('req is ...', req.body)
}
目前控制台日志是这样的:
req is ... { '{"name":"Smiley"}': '' }
我无法正确使用这样的信息吗?
答案 0 :(得分:1)
是的,你是部分正确的,你收到了一个需要解析的字符串。发送请求时无需使用JSON.stringify()。 此外,通过发送对象,您应该使用内容类型application / json。您可能忘记了包含身体解析器中间件。
答案 1 :(得分:0)
这是因为Content-Type
和body
不一致。 Content-Type
表示内容为x-www-form-urlencoded
,但正文格式为JSON。
如果您希望将Content-Type
保留为application/x-www-form-urlencoded
,则正文格式应为a=xxx&b=yyy
。对于您的代码,它将是:
body: 'name='+name
如果您想将数据作为JSON传输,Content-Type
应更改为application/json
。