0

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

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

我将无法正确使用此类信息,对吗?

4

2 回答 2

1

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

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

于 2017-06-15T13:37:50.420 回答
0

这是因为Content-Typeandbody不一致。Content-Type说内容是,x-www-form-urlencoded但正文格式是 JSON。

如果要保持Content-Typeas application/x-www-form-urlencoded,body 格式应该是一样的a=xxx&b=yyy。对于您的代码,它将是:

body: 'name='+name

如果您想以 JSON 格式传输数据,Content-Type则应更改为application/json.

于 2017-06-16T09:23:59.153 回答