【发布时间】: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 完成了。想要将其作为答案提交?
-
很高兴能帮上忙,谢谢伙计!