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

问题描述:

我是AngularJS的新成员。我想从角度控制器到我的MVC5控制器进行ajax调用。我行动三个参数驻留在的HomeController如何通过从angularJS控制器到MVC5控制器的ajax调用获取JSON

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

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

+0

为什么你传递$ http服务的addFriend功能 – 2014-09-26 19:30:38

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

[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范围功能,您已经注入其

+0

哇伟大? 。它完美地工作。感谢您修改代码并提供有价值的信息在 – 2014-09-26 19:49:28

+0

没问题。如果我是你,我会阅读工厂和模块。他们可以派上用场,为您的控制器提供数据访问层。如果你有这个电话在工厂添加朋友,注入你的工厂,你可以用同样的方式使用它。然后在另一个控制器中注入并执行相同的操作,而不必重写它。如果网址发生变化也有帮助。 – rleffler 2014-09-26 20:17:19