簡體   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