如何通过从angularJS控制器到MVC5控制器的ajax调用来获取JSON

时间:2014-09-26 19:15:11

标签: ajax json angularjs

我是AngularJS的新手。我想从我的角度控制器到我的MVC5控制器进行ajax调用。我的操作三个参数位于 HomeController 中,如

public ActionResult addFrnd(int name, string phone, int age)
    {
       //do something
        return json();
    }

我的角度控制器就在这里

var myModule = angular.module("myApp", ['ngRoute']);
myModule.controller('SimpleController', function ($scope, $http, SimpleFactory) {
        $scope.friends = [];
        init();


        function init() {
            $scope.friends = SimpleFactory.getFriend();
        }

        $scope.addFriend = function ($http) {
            $scope.friends.push(
                {
                    name: $scope.newFriend.name,
                    phone: $scope.newFriend.phone,
                    age: $scope.newFriend.age
                });
            //$http("/Home/addFrnd");

            $http.get({
                type: "POST",
                url: "~/Home/addFrnd",
                data: {
                    name: $scope.newFriend.name,
                    phone: $scope.newFriend.phone,
                    age: $scope.newFriend.age
                },
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg) {
                    alert(msg.d);
                },
                error: function (msg) {
                    alert(msg.d);
                }
            });
        };
    });

我该如何解决这个问题?请帮帮我

1 个答案:

答案 0 :(得分:0)

其中一些可能取决于您的路由。无论哪种方式,您都需要在http呼叫中删除之前删除“〜”。另一个问题是你使用$ http.get,你指定的类型是一个帖子。如果它实际上是一个帖子,只需使用$ http.post({。另外,在你的mvc控制器中指定这个调用是一个帖子,使用post属性:

[HttpPost]
public ActionResult addFrnd(int name, string phone, int age)
    {
       //do something
        return json();
    }

你可以用这样的角度写你的帖子:

$scope.addFriend = function(){
addFriend()
.success(function(returnVal){
//success
})
.err(function(error){
//error
});
};

function addFriend(){
    var  data = {
                    name: $scope.newFriend.name,
                    phone: $scope.newFriend.phone,
                     age: $scope.newFriend.age
                    };

   return  $http.post('/Home/addFrnd/', data);
}

也不需要将$ http传递给$ scope.addFriend的范围函数,你已经注入了它