如何通过Angular向ASP.net Web API发送帖子请求

时间:2014-06-24 13:41:57

标签: angularjs asp.net-mvc-4 asp.net-web-api2

我是angular和ASP.NET web API的新手。在角度我从表单获取值并尝试通过post请求将其传递给服务器她是角度的代码。

app.controller('AddTrnController',['$scope', 'CategoriesService','$http', function($scope, CategoriesService, $http){
    $scope.categories =[{}];
    $scope.AddTrn = {};
    function init(){
            CategoriesService.getCategories("1")
            .success(function(data){
                $scope.categories = data;
            })
            .error(function(data, status, headers){alert(status);});
        }
    init();

    $scope.change= function(option){
        $scope.AddTrn.TrnID = option.CatID;
        $scope.AddTrn.TrnAccount = 1;
    };


    $scope.UpdateTrans=function(){
        alert("21312");
        $http({method:"post",
            url:'http://localhost:18678/api/Transaction',
            params:"data:$scope.AddTrn"}
            ).success(function(){alert("succeeded");
        }).error(function(){alert("faild");});
    };

}]); 

她是Web API的代码。

public HttpResponseMessage PostTransaction(String transaction)
        {
            if (ModelState.IsValid)
            {
                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, transaction);
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = transaction}));
                return response;
            }
            else
            {
                return Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }

我总是得到钓鱼者的反应失败,当我在API中断点时,它不会触发。

1 个答案:

答案 0 :(得分:1)

您正在使用的params选项会将项添加到查询字符串中,对于您可能希望使用数据选项的帖子,请尝试将代码更改为:

$scope.UpdateTrans=function(){
        alert("21312");
        $http({method:"post",
                url:'http://localhost:18678/api/Transaction',
                data:$scope.AddTrn
              }
            ).success(function(){alert("succeeded");
        }).error(function(){alert("faild");});
    };