【问题标题】:$http post with angular gives error: possibly unhandled rejection$http post with angular给出错误:可能未处理的拒绝
【发布时间】:2017-09-21 03:56:42
【问题描述】:

我刚刚设法让我的 $http 帖子在 Angular 上运行。它做了它需要做的事情,但是当我发布数据然后刷新页面时,它在我的控制台中给出了这个错误:

可能未处理的拒绝:{"data":null,"status":-1,"config":{"method":"POST","transformRequest":[null],"transformResponse":[null], "jsonpCallbackParam":"callback","url":"/insert","data":

这是我的 Angular 发帖:

app.controller('ContactCtrl', function($scope, $http){
  $scope.formModel = {};
  $scope.onSubmit = function(){
  $http.post('/insert', $scope.formModel)
  console.log('success');
  };
});

这是我在 Express.js 中对我的 MongoDB 的服务器调用:

router.post('/insert', function(req, res, next){
  var item = {
    name: req.body.name,
    adress: req.body.adress,
    postal: req.body.postal,
    city: req.body.city,
    email: req.body.email,
    phone: req.body.phone,
    quotation: req.body.quotation,
    message: req.body.message
};

var data = new UserData(item);
data.save();
console.log('Item inserted');

});

【问题讨论】:

  • status":-1" 表示可能是网络问题..检查 mongodb 连接。也请告诉$scope.formModel对象
  • 这似乎不是问题,因为我的数据已成功存储在数据库中
  • 那么你没有像res.json(testObject);一样在.save()之后发回状态200
  • 是的,状态 200 成功了。谢谢你:)

标签: angularjs node.js mongodb express


【解决方案1】:

试试

var BACKEND_URL = "http://whatever:port";
var postData = angular.toJson($scope.formModel, true);
$http.post(BACKEND_URL + '/insert', postData);

在后端,要么在mongo保存操作后使用res.sendStatus(200);,要么如下修改。

.save(function(err, result) {
    if (err) throw err;

    if(result) {
        res.json(result)
    }
})

【讨论】:

  • res.sendStatus(200) 就足够了。那成功了。感谢您的帮助
猜你喜欢
  • 2017-04-25
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 2018-02-27
  • 2017-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多