【问题标题】:The posted data was populated into KEY not VALUE of req.body by 'body-parser''body-parser' 将发布的数据填充到 req.body 的 KEY 而不是 VALUE
【发布时间】:2016-09-15 07:55:59
【问题描述】:

我使用 angular $http 将数据从 cordova 应用程序发布到节点应用程序。

我尝试了几种'content-type',只有'application/x-www-form-urlencoded'可以成功发送到节点服务器,所以我的代码是这样的:

$http({
        url: CONSTANTS.login_url,
        method: "POST",
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded'
        },
        data: {"foo": "bar"},
      })

但是在node应用中,我从req.body得到的数据是:

{"{"foo":"bar"}":""}

正文的键是一个字符串。

但我的例外结果应该是一个像这样的对象:

{
  "foo": "bar",
}

SO中有一个类似的问题,原因是他在前端使用了'JSON.stringify'。但是我不使用stringify为什么我无法获取异常数据?

【问题讨论】:

标签: javascript angularjs node.js cordova


【解决方案1】:

添加trnsformRequest 函数来转换数据以匹配content-type

$http({
    url: CONSTANTS.login_url,
    method: 'POST',
    url: url,
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    data: {"foo": "bar"},
    transformRequest: function(obj) {
        var str = [];
        for(var p in obj)
        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
        return str.join("&");
    }
}).success(function () {});

答案借自here

希望这会有所帮助。

【讨论】:

  • @shakib 最好将问题标记为重复,而不是从其他地方复制答案。
猜你喜欢
  • 2016-01-17
  • 2021-06-18
  • 1970-01-01
  • 2018-01-28
  • 2021-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多