【问题标题】:How to get JSON through ajax call from angularJS controller to MVC5 controller如何通过从 angularJS 控制器到 MVC5 控制器的 ajax 调用获取 JSON
【发布时间】:2014-09-26 19:15:11
【问题描述】:

我是 AngularJS 的新手。我想从我的角度控制器向我的 MVC5 控制器进行 ajax 调用。我的 action 带有 三个参数 驻留在 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);
                }
            });
        };
    });

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

【问题讨论】:

  • 为什么要将 $http 服务传递给 addFriend 函数?

标签: ajax json angularjs


【解决方案1】:

其中一些可能取决于您的路由。无论哪种方式,您都需要在 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);
}

$scope.addFriend 的作用域函数也不需要传入 $http,你已经注入了

【讨论】:

  • 哇太棒了。它完美地工作。感谢您修改代码并提供有价值的信息
  • 没问题。如果我是你,我会阅读工厂和模块。对于控制器的数据访问层,它们可以派上用场。如果你有这个调用来在工厂中添加朋友,注入你的工厂,你可以以同样的方式使用它。然后在另一个控制器中注入它并执行相同的操作,而无需重写它。如果网址发生变化,也有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
  • 2017-06-02
  • 1970-01-01
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
  • 2017-02-15
相关资源
最近更新 更多