发布的数据由' body-parser'填充到req.body的KEY not VALUE中。

时间:2016-09-15 07:55:59

标签: javascript angularjs node.js cordova

我使用angular $ http。

从cordova应用程序将数据发布到节点应用程序

我尝试了几种内容类型'并且只有' application / x-www-form-urlencoded'可以成功发送到节点服务器,所以我的代码就像:

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

但是在节点应用程序中,我从req.body获得的数据是:

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

正文的键是一个字符串。

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

{
  "foo": "bar",
}

在SO中有一个类似的问题,原因是他使用了“JSON.stringify”#39;在前端。但我不能使用stringify为什么我无法获得例外数据?

1 个答案:

答案 0 :(得分:0)

添加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

借来的答案

希望这会有所帮助。