Javascript Express body解析器:JSON中位置0处的意外标记#

Javascript Express body解析器:JSON中位置0处的意外标记#,javascript,json,polymer,Javascript,Json,Polymer,我正在尝试通过Polymer登录返回用户数据。我和邮递员一起工作,但是我在把它翻译成聚合物时遇到了困难 在Postman中,它返回一个JSON对象,但在Polymer中,它返回未定义的对象 聚合客户端代码[连接到node.js服务器] <iron-ajax id="ajaxUser" url="http://localhost:8080/login" method="post" handle-as="json" content-type="application/json"

我正在尝试通过Polymer登录返回用户数据。我和邮递员一起工作,但是我在把它翻译成聚合物时遇到了困难

在Postman中,它返回一个JSON对象,但在Polymer中,它返回未定义的对象

聚合客户端代码[连接到node.js服务器]

<iron-ajax id="ajaxUser"
  url="http://localhost:8080/login"
  method="post"
  handle-as="json"
  content-type="application/json"
  headers='{"Access-Control-Allow-Origin": "*"}'
  params="[[params]]"
  on-response="saveUserCredentials"
  last-response="{{user}}"></iron-ajax>
服务器

// Middleware
app.options('*', cors(corsOptions)) // preflight OPTIONS; put before other routes
app.use(formData.parse(formBody))   // parse req.body data from `express-form-data` module
app.use(bodyParser.json())
app.use(apiLimit)                   // Rate limit applied to all requests, can apply to specific endpoints
app.use((req, res, next) => {       // Enable Cross-Origin Resource Sharing (CORS)
  res.header("Access-Control-Allow-Origin", "*")
  res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT")
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, content-type, Accept, Authorization, x-api-key")
  next()
}) 
错误

SyntaxError:JSON中位置0处的意外标记#
在JSON.parse()
在createStrictSyntaxError(C:\node\u modules\body parser\lib\types\json.js:157:10)
在解析时(C:\node\u modules\body parser\lib\types\json.js:83:15)
在C:\node\u modules\body parser\lib\read.js:121:18
在invokeCallback(C:\node\u modules\raw body\index.js:224:16)
完成时(C:\node\u modules\raw body\index.js:213:7)
在IncomingMessage.onEnd(C:\node\u modules\raw body\index.js:273:7)
在IncomingMessage.emit(events.js:159:13)
在endReadableNT(_stream_readable.js:1062:12)
在进程中。_tick回调(内部/process/next_tick.js:152:19)


问题是您的
帖子
正文是空的(如请求有效负载的屏幕截图所示)。您正试图通过
.params
传递用户凭据,这是为了增加URL查询参数(注意请求URL如何将用户凭据包含为参数)

要设置
POST
正文,请改为设置(并将
this.params
更改为
this.body
):



表示请求包含无效的JSON。请从DevTools网络面板发布请求有效负载的屏幕截图。OK。我上传了一张图片。请求URL是不同的,因为我缩短了问题的字符串…您的请求有效负载关键字使我走上了正确的轨道。我需要添加
this.$.ajaxUser.body=this.params生成请求之前。谢谢你,托尼!!好,对。这也是一种更为“聚合”的方法。谢谢@KVNA没问题:)
loginUser() {
  this.params = {"username": this.$.username.value, "password": this.$.password.value};
  console.log(this.params); // logs this.params as populated JSON 
  let request = this.$.ajaxUser.generateRequest();
  request.completes.then(req => {
    console.log(req);       // no log
    console.log(this.user); // no log
  })
}

saveUserCredentials() {
  console.log(this.user);
}
// Middleware
app.options('*', cors(corsOptions)) // preflight OPTIONS; put before other routes
app.use(formData.parse(formBody))   // parse req.body data from `express-form-data` module
app.use(bodyParser.json())
app.use(apiLimit)                   // Rate limit applied to all requests, can apply to specific endpoints
app.use((req, res, next) => {       // Enable Cross-Origin Resource Sharing (CORS)
  res.header("Access-Control-Allow-Origin", "*")
  res.header("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT")
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, content-type, Accept, Authorization, x-api-key")
  next()
}) 
<iron-ajax body="[[body]]" ...>