我使用 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));
浏览器注销该对象,我可以完美地操作它。
最佳答案
您没有通过 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
});
关于javascript - AJAX 中的数组请求 JSON 对象数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43245557/