Angularjs JSON POST数据作为键而不是Express.js中的值接收

时间:2016-10-31 20:17:23

标签: angularjs json node.js express

我正在尝试将带有JSON数据的POST请求从angularjs发送到node / express,但所有数据都显示在req.body的 KEY 而不是键值对中。 / p>

我在同一个问题上看到了这个问题,但解决方案并没有解决我的问题:Express.js : POST data as KEY of a req.body object instead of VALUE of req.body

这是我的客户端代码(ANGULARJS):

  var job = {
    session_id: $scope.uid,
    timestamp: 0,
    invoice_id: $params.i
  };
  var url = 'https://example/' + $scope.uid;

  var config = {
      headers : {
          'Content-Type' : 'application/json; charset=UTF-8'
      }
  };

  //var config = {};
  $http.post(url, job, config).then(
  function successCallback(response) {
    $scope.loading = false;
    console.log('Success:', response.data)
  }, function errorCallback(response) {
    $scope.loading = false;
    console.log('Error:', response.data)
  });

这是我的服务器端代码(NODEJS / EXPRESS):

app.use(bodyParser.json());
app.use(function (req, res, next) {
  var domainWhitelist = ['https://www.example.com'];
  var origin = req.headers.origin;
  if(domainWhitelist.indexOf(origin) > -1){
    res.setHeader('Access-Control-Allow-Origin', origin);
  }
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
  next();
  });
  app.post('/payment/:session', function(req, res) {
    var data = req.body;
    console.log('data:', data)
  }); 

这是我在服务器端获得的数据:

{'{"session_id":"123","timestamp":0,"invoice_id":"-test"}': '' }

1 个答案:

答案 0 :(得分:0)

尝试:

  $http.post(url, {data:job}, config).then(
  function successCallback(response) {
    $scope.loading = false;
    console.log('Success:', response.data)
  }, function errorCallback(response) {
    $scope.loading = false;
    console.log('Error:', response.data)
  });