我正在使用jQuery向Node / Express服务器发送请求,该数据是包含数组的JSON对象:
var data = {
"name": "James Jamesy",
"children": [
{
"name": "Tiny James",
"age": "4"
},
{
"name": "Little James",
"age": "6"
},
{
"name": "Graham",
"age": "8"
}
]
}
var request = $.ajax({
method: 'PUT',
url: apiPath + 'updateuser',
data: data,
dataType: 'json'
});
请求本身工作正常,但服务器将数据报告为:
{
name: 'James Jamesy',
'children[0][name]': 'Little James',
'children[0][age]': '4',
'children[1][name]': 'Medium James',
'children[1][age]': '6',
'children[2][name]': 'Graham',
'children[2][age]': '8'
}
现在我已经发现我可以通过字符串化子数组来获得我想要的结果:
var data = {
"name": "James Jamesy",
"children": JSON.stringify([ ... ])
}
然后JSON.parse()
将其放在服务器上。
但是我希望有人可以解释为什么数组在请求中被转换,以及我是否应该以不同的方式处理它?在这种情况下,转换单个数组很好,但是我可能会将半复杂的对象发送到服务器。
提前致谢!
编辑:另外和奇怪地(?),如果我将JSON结果作为传递的JSON发回,它可以完美地运行:
res.json(JSON.parse(req.body.categories));
浏览器会记录该对象,我可以完美地操作它。
答案 0 :(得分:0)
您没有通过ajax传递JSON字符串,这就是您无法处理后端数据的原因。
var data = {
"name": "James Jamesy",
"children": [
{
"name": "Tiny James",
"age": "4"
},
{
"name": "Little James",
"age": "6"
},
{
"name": "Graham",
"age": "8"
}
]
}
var request = $.ajax({
method: 'PUT',
url: apiPath + 'updateuser',
data: JSON.stringify(data),
contentType: 'application/json', // for request
dataType: 'json' // for response
});