【问题标题】:Node.js/ Express POST Request Body Parsed into Incorrect JSONNode.js/ Express POST 请求正文被解析为不正确的 JSON
【发布时间】:2015-05-31 10:45:12
【问题描述】:

我有一个 Polymer core-ajax 组件将一些数据发送到 Node.js 服务器。数据正在正确发送(我可以使用 Go Web 服务器对其进行解析),但 Node 将其解析为字符串化主体,即 JSON 对象中空白字符串的键:

{ '{"count":-1,"uid":1}': '' }

这是从 Polymer 发送请求的代码:

sendCount: function(change) {
  console.log("Sending...");
  console.log(JSON.stringify({"count": change, "uid": this.uid}));
  // ^ This prints: {"count":-1,"uid":1}
  this.$.ajax.body = JSON.stringify({"count": change, "uid": this.uid});
  this.$.ajax.go();
}

这是节点代码:

app.post("/post", function(req, res) {
  console.log(res.headers);
  console.log(req.body); // Prints { '{"count":-1,"uid":1}': '' }
  res.setHeader('Content-Type', 'application/json');
  res.end(JSON.stringify(req.body));
});

当我收到响应时,它返回了格式错误的 JSON。

我应该如何正确解析 Node 中的 JSON?

还有:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

【问题讨论】:

  • 设置ajax.body等于对象,而不是JSON.stringify(object)
  • 您是否设置了core-ajax 属性contentType="application/json"handleAs="json"?我这样做并在将其设置为 ajax.body 之前对 JSON 进行了字符串化,它适用于节点。
  • @idleherb 完成了。想要将其作为答案提交?
  • 很高兴能帮上忙,谢谢伙计!

标签: ajax json node.js polymer


【解决方案1】:

设置core-ajax属性contentType="application/json"handleAs="json",并在设置为ajax.body之前对JSON进行字符串化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 2019-02-25
    相关资源
    最近更新 更多