Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过ajax调用从angularJS控制器到MVC5控制器获取JSON_Ajax_Json_Angularjs - Fatal编程技术网

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

如何通过ajax调用从angularJS控制器到MVC5控制器获取JSON,ajax,json,angularjs,Ajax,Json,Angularjs,我是安格拉斯的新手。我想从angular控制器到MVC5控制器进行ajax调用。我有三个参数的操作驻留在HomeController中,如 我的角度控制器在这里 var myModule = angular.module("myApp", ['ngRoute']); myModule.controller('SimpleController', function ($scope, $http, SimpleFactory) { $scope.friends = [];

我是安格拉斯的新手。我想从angular控制器到MVC5控制器进行ajax调用。我有三个参数的操作驻留在HomeController中,如

我的角度控制器在这里

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);
                }
            });
        };
    });

我怎样才能解决这个问题?请帮助我

其中一些可能取决于您的路线。无论哪种方式,您都需要在http调用中删除~before home。另一个问题是您使用的是$http.get,并且指定的类型是post。如果它实际上是一个post,只需使用$http.post{。另外,在mvc控制器中使用post属性指定此调用是一个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的scope函数中,您已经注入了它

为什么要将$http服务传递到addFriend函数中?哇,太棒了。它工作得很好。感谢您修改代码并提供有价值的信息。没问题。如果我是您,我会阅读工厂和模块。他们可以为您的控制器提供数据访问层非常方便。如果您通过此调用在工厂中添加friend,则注入您的工厂,您可以以相同的方式使用它。然后在另一个控制器中注入它并执行相同的操作,而无需重写它。如果url发生更改,也会有所帮助。
$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);
}