繁体   English   中英

AngularJs $ http发布请求以将数据发送到Rails控制器

[英]AngularJs $http post request to send data to rails controller

我正在使用Rails MVC,并且正在为各种JavaScript函数使用angularjs(非常新)。 我有一些要通过$ http post方法发送到相应的rails控制器的create方法的ID数组。

我的服务是:

.service('teamService' , function ($http) {
  var TeamService = {};
  TeamService.saveTeam = function(player_ids) {
  $http.post('/user_teams',player_ids)
  .success(function(data,status){
    data = player_ids;
    status =  true;
});
};

相应的角度控制器功能为:

    $scope.saveTeam = function () {
  var mf = $scope.getIDs($scope.Midfielders.data);
  var df = $scope.getIDs($scope.Defenders.data);
  var fw = $scope.getIDs($scope.Forward.data);
  var gk = $scope.getIDs($scope.GoalKeeper.data);
  var player_ids = mf.concat(df,fw,gk);
  teamService.saveTeam(player_ids);
};

当我单击调用控制器saveTeam函数的视图中的按钮时,它说控制台中出现错误422无法处理的条目。 我究竟做错了什么?

根据错误消息,我相信您的发布请求将其发送到Rails控制器,但这就是发生错误的地方。

可以对Angular进行的一项调整可以帮助进行故障排除,并且通常有一个好的作法是处理HTTP调用错误情况的功能。

所以代替

$http.post('/user_teams',player_ids)
  .success(function(data,status){
    data = player_ids;
    status =  true;
});

也许尝试类似:

$http.post('/user_teams',player_ids)
  .then(function(data,status){
    data = player_ids;
    status =  true;
},function(error){
     //handle what happens if there is an error with the http post call
     console.log("Error occurred: " + error);
});

.then()的第一个函数是处理您的http调用成功结果的函数,仅当http调用发生错误时才调用第二个函数。

有关Angular的$ http的其他信息: https : //docs.angularjs.org/api/ng/service/ $ http#

希望这会有所帮助,Cliff

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM