2017-04-06 50 views
0

我使用jQuery那数据是包含数组的JSON对象发送请求到节点/ Express服务器:阵列在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: data, 
    dataType: 'json' 
}); 

本身工作正常的请求,但是该服务器是报告中的数据为:

var data = { 
    "name": "James Jamesy", 
    "children": JSON.stringify([ ... ]) 
} 
012:

{ 
    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' 
} 

现在我已经不是字符串化的儿童阵列想通了,我可以得到我想要的结果

然后JSON.parse()在服务器上。

但是我希望有人可以解释为什么数组被转换为它在请求中的位置,以及我是否应该以不同的方式处理这个问题?正如在这个例子中,转换单个数组很好,但是我可能会将我想要发送到服务器的半复杂对象转换为可能。

在此先感谢!

编辑:(?)此外和奇怪,如果我发送JSON结果早在传递JSON,它完美的作品:

res.json(JSON.parse(req.body.categories)); 

浏览器注销的对象,我可以完全操纵它精细。

+0

尝试改变'数据类型:在Ajax调用json'' –

+0

感谢您的答复: 'json''到'的contentType'!不幸的是,这导致服务器只是收到一个空的对象。 ('{}') – stuntboots

+0

我看到很多JSON错误lol你在Express中使用body parser吗? –

回答

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 
});