Javascript:在trought post方法中发送带有对象的对象

时间:2016-11-17 15:26:28

标签: javascript object post

我是javascript的新手,我正试图在trought post方法中发送一个带有其他对象的对象:

$.post('/posttest', {tableName : 'WSTest', data : {name : "Rachid", age : 42, ville : "Tokyo"}}).done(function(data) {
      console.log("data posted : ", data);
  });

我可以使用tableName检索req.body.tableNamereq.body.data给我未定义。当我得到console.log(req.body)时:

{ tableName: 'WSTest',
  'data[name]': 'Rachid',
  'data[age]': '42',
  'data[ville]': 'Tokyo' }

据我所知,javascript将数据作为dico?如何将数据作为对象?

1 个答案:

答案 0 :(得分:1)

标准格式编码数据是 flat 数据结构。它只是键/值对。

PHP引入了非标准的语法扩展,允许您描述嵌套数据,但您的解析器似乎无法识别它。

要访问数据,您需要提及方括号。

req.body["data[name]"]
// etc

或者,找到一个将方括号识别为具有特殊含义的解析器。

假设您正在使用(相当常见的)" URL编码的表单正文解析器" body-parser模块的功能,请参阅the docs

  

扩展

     

扩展选项允许选择使用查询字符串库(假设时)或qs库(当为真时)解析URL编码数据。 "扩展"语法允许将富对象和数组编码为URL编码格式,从而允许使用URL编码的类似JSON的体验。有关详细信息,请参阅qs库。

所以:

app.use(bodyParser.urlencoded({ extended: true }));

......可能会做到这一点。