来自前端的表单在后端nodejs上的req.body上没有正确接收

时间:2017-06-15 12:44:41

标签: http express fetch body-parser mern

我正在使用身体解析器并为我的前端做出反应。 我正在尝试创建一个用户;下面是从后端服务器获取数据的前端:

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"}': '' }

我无法正确使用这样的信息吗?

2 个答案:

答案 0 :(得分:1)

是的,你是部分正确的,你收到了一个需要解析的字符串。发送请求时无需使用JSON.stringify()。  此外,通过发送对象,您应该使用内容类型application / json。您可能忘记了包含身体解析器中间件。

https://www.npmjs.com/package/body-parser

答案 1 :(得分:0)

这是因为Content-Typebody不一致。 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