我正在尝试发送一个看起来像这样的对象
var postBody = {
id: userID,
objectID: [0, 1],
objects: [
{id: 0, x: 0.33930041152263374, y: 0.08145246913580247, width: 0.0823045267489712, height: 0.30864197530864196},
{id: 1, x: 0.5277777777777778, y: 0.08453888888888889, width: 0.0823045267489712, height: 0.30864197530864196}
]
};
这是ajax调用
$.ajax({
type: 'POST',
url: url,
data: postBody,
dataType: 'JSONP',
success: function(data) {
console.log(data);
},
error: function(err) {
console.log(err);
}
});
这就是它在服务器上的样子
{ id: '583f137fc338b517ec467643',
'objectID[]': [ '0', '1' ],
'objects[0][id]': '0',
'objects[0][x]': '0.33930041152263374',
'objects[0][y]': '0.08145246913580247',
'objects[0][width]': '0.0823045267489712',
'objects[0][height]': '0.30864197530864196',
'objects[1][id]': '1',
'objects[1][x]': '0.5277777777777778',
'objects[1][y]': '0.08453888888888889',
'objects[1][width]': '0.0823045267489712',
'objects[1][height]': '0.30864197530864196' }
如果我放数据:JSON.stringify(postBody)这就是我得到的
{ '{"id":"583f137fc338b517ec467643","objectID":[0,1],"objects":[{"id":0,"x":0.5,"y":0.5,"width":0.1,"height":0.1},{"id":1,"x":0.5401234567901234,"y":0.1833043209876543,"width":0.0823045267489712,"height":0.30864197530864196}]}': '' }
它有效!但后来我不能JSON.parse()它 这是我尝试时得到的。
TypeError: Cannot convert object to primitive value
我正在对后端数据做的就是这个
console.log(JSON.parse(req.body)); // in the first example it was the same thing but only without JSON.parse()
任何人都知道为什么会发生这种情况? 即使你有一个关于我可以尝试随意发布的建议,否则我将不得不编写一个函数来解析这些badass输入lol。
答案 0 :(得分:1)
所有解析/字符串化都由Node处理,所以不要担心,只需按原样传递对象,然后就可以在req.body中访问它的属性。
客户:
$.ajax({
type: 'POST',
url: url,
data: postBody,
dataType: 'json',
success: function(data) {
console.log(data);
},
error: function(err) {
console.log(err);
}
});
服务器:
console.log(req.body); //should give you [Object object]
然后您可以使用:res.status(200).json(req.body));
并在你的ajax回调中阅读:
success: function(data) {
console.log(data);
},