Ember:jquerypost与嵌套的JSON负载

Ember:jquerypost与嵌套的JSON负载,jquery,json,node.js,post,ember.js,Jquery,Json,Node.js,Post,Ember.js,我想在我的REST服务器上发布一些JSON JSON如下所示: { "name": "John Doe", "socials": { "facebook": { "uid": "1234321", "fbsrCookie": "sdfsdfhgsd" } } } Ember.$.post('http://localhost:3000/register', data).then(function ... E

我想在我的REST服务器上发布一些JSON

JSON如下所示:

  {
    "name": "John Doe",
    "socials": {
      "facebook": {
        "uid": "1234321",
        "fbsrCookie": "sdfsdfhgsd"
      }
    }
  }
Ember.$.post('http://localhost:3000/register', data).then(function ...
Ember中的POST调用如下所示:

  {
    "name": "John Doe",
    "socials": {
      "facebook": {
        "uid": "1234321",
        "fbsrCookie": "sdfsdfhgsd"
      }
    }
  }
Ember.$.post('http://localhost:3000/register', data).then(function ...
使用Firefox的开发者工具查看该消息,可以看到以下参数

name: "John Doe"
socials[facebook][uid]: "1234321"
socials[facebook][fbsrCookie]: "sdfsdfhgsd"
由于标题“Content Type”是“application/x-www-form-urlencoded;charset=UTF-8”,我无法在node.js-backend上将值作为对象处理(因为它不是JSON)


有没有办法从服务器-(node.js)-后端读取属性?或者如何将有效负载作为JSON发送?

好的,就像前面提到的@sdgluck一样,express.js-Framework(我使用的)也可以解析我上面问题中描述的表单数据(url编码的)参数。因此,我仔细检查了express.js的bodyParser中间件的include,并将“extended”参数更改为true,如下所示:

app.use(bodyParser.urlencoded({
  extended: true
}));
现在express.js也解析参数,让我通过点符号访问它们(比如:
req.body.socials.facebook.uid


感谢@sdgluck

好的,就像@sdgluck提到的一样,express.js-Framework(我使用的)也可以解析我上面问题中描述的表单数据(url编码的)参数。因此,我仔细检查了express.js的bodyParser中间件的include,并将“extended”参数更改为true,如下所示:

app.use(bodyParser.urlencoded({
  extended: true
}));
现在express.js也解析参数,让我通过点符号访问它们(比如:
req.body.socials.facebook.uid


感谢@sdgluck

好的,就像@sdgluck提到的一样,express.js-Framework(我使用的)也可以解析我上面问题中描述的表单数据(url编码的)参数。因此,我仔细检查了express.js的bodyParser中间件的include,并将“extended”参数更改为true,如下所示:

app.use(bodyParser.urlencoded({
  extended: true
}));
现在express.js也解析参数,让我通过点符号访问它们(比如:
req.body.socials.facebook.uid


感谢@sdgluck

好的,就像@sdgluck提到的一样,express.js-Framework(我使用的)也可以解析我上面问题中描述的表单数据(url编码的)参数。因此,我仔细检查了express.js的bodyParser中间件的include,并将“extended”参数更改为true,如下所示:

app.use(bodyParser.urlencoded({
  extended: true
}));
现在express.js也解析参数,让我通过点符号访问它们(比如:
req.body.socials.facebook.uid


感谢@sdgluck

如果您有一个返回json的REST服务器,那么将其发送到
application/json

vara data = {
  "name": "John Doe",
  "socials": {
    "facebook": {
      "uid": "1234321",
      "fbsrCookie": "sdfsdfhgsd"
    }
  }
}

Ember.$.ajax({
  method: "post",
  contentType: 'application/json',
  data: JSON.stringify(data)
});

如果您有返回json的REST服务器,则将其发送到
application/json

vara data = {
  "name": "John Doe",
  "socials": {
    "facebook": {
      "uid": "1234321",
      "fbsrCookie": "sdfsdfhgsd"
    }
  }
}

Ember.$.ajax({
  method: "post",
  contentType: 'application/json',
  data: JSON.stringify(data)
});

如果您有返回json的REST服务器,则将其发送到
application/json

vara data = {
  "name": "John Doe",
  "socials": {
    "facebook": {
      "uid": "1234321",
      "fbsrCookie": "sdfsdfhgsd"
    }
  }
}

Ember.$.ajax({
  method: "post",
  contentType: 'application/json',
  data: JSON.stringify(data)
});

如果您有返回json的REST服务器,则将其发送到
application/json

vara data = {
  "name": "John Doe",
  "socials": {
    "facebook": {
      "uid": "1234321",
      "fbsrCookie": "sdfsdfhgsd"
    }
  }
}

Ember.$.ajax({
  method: "post",
  contentType: 'application/json',
  data: JSON.stringify(data)
});

您使用的是哪个节点HTTP框架?例如,只要包含表单编码请求,Express就应该处理表单编码请求。@sdgluck我确实在使用Express。如果我试图读取请求,比如:
console.log(req.body.socials.facebook.uid)不会打印任何内容。如果您只记录
req.body
怎么办?@sdgluck请查看答案您使用的是什么节点HTTP框架?例如,只要包含表单编码请求,Express就应该处理表单编码请求。@sdgluck我确实在使用Express。如果我试图读取请求,比如:
console.log(req.body.socials.facebook.uid)不会打印任何内容。如果您只记录
req.body
怎么办?@sdgluck请查看答案您使用的是什么节点HTTP框架?例如,只要包含表单编码请求,Express就应该处理表单编码请求。@sdgluck我确实在使用Express。如果我试图读取请求,比如:
console.log(req.body.socials.facebook.uid)不会打印任何内容。如果您只记录
req.body
怎么办?@sdgluck请查看答案您使用的是什么节点HTTP框架?例如,只要包含表单编码请求,Express就应该处理表单编码请求。@sdgluck我确实在使用Express。如果我试图读取请求,比如:
console.log(req.body.socials.facebook.uid)将不打印任何内容。如果您仅记录
req.body
怎么办?@sdgluck请查看答案