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

标签 javascript node.js ajax express

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

相关文章:

javascript - 使用 dojo.xhrget() 方法在 Dojogrid 中显示数据

javascript - Angular2路由中,URL改变了但内容没有更新

node.js - 使用nodejs进行依赖注入(inject): some ideas?

node.js - 使用 Angular 和 Firebase 获取 uid 并迭代对象数组

mysql - 如何使用ajax(客户端)将数据插入到mysql表中

ruby-on-rails - Ruby on Rails 无法使用 CoffeeScript 和 AJAX 发送获取请求

javascript - mongoose 和 nodejs 的 mongodb 连接超时错误

javascript - jQuery 中的 window.resize 多次触发

javascript - 获取一行中复选框的标题名称

javascript - 如何使用 JS 和 NodeJS 服务器为标准 html 页面正确配置 app.yaml?