gpt4 book ai didi

javascript - AJAX 中的数组请求 JSON 对象数据

转载 作者:太空宇宙 更新时间:2023-11-04 00:24:39 26 4
gpt4 key购买 nike

我使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com