2014-09-26 75 views
0

我是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

回答

0

其中一些可能取決於您的路由。無論哪種方式,你需要在你的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