从ASP.NET中的操作方法检索Json对象

问题描述:

我已经搜索并看到了许多解决方案,但我仍然没有取得任何进展。我在控制台中没有得到任何错误,并且从ajax请求中得不到任何回报。从ASP.NET中的操作方法检索Json对象

下面是操作方法的代码:

 [HttpGet] 
     public ActionResult GetEmployees() 
     { 
      AWEmployeeModel aw = new AWEmployeeModel(); 
      aw.ID = 0; 
      aw.Name = "Selena"; 
      aw.Position = "Cashier"; 
      aw.Department = "Finance"; 

      return Json(aw,JsonRequestBehavior.AllowGet); 
     } 

这里是我的控制器中我的Ajax调用:

EmpApp.controller("AWEmpControl", function ($scope) { 

loadEmployees(); 

function loadEmployees() { 
    $.ajax({ 
     url: "/AWEmployee/Index/GetEmployees", 
     method: "GET", 
     success:function (response) { 
      $scope.employees = response["Name"]; 
     } 
}); 
} 

}); 

我也有希望的页面上的NG指示:

<div class="container" ng-app="AWEmpApp" ng-controller="AWEmpControl"> 
{{employees}} 
</div> 

我测试过,看看这些脚本是否可以正常工作,方法是分配$ scope.employees =“Hello ...”;并没有问题,所以我知道它与脚本加载无关....可能是什么问题?我已经确定将请求描述为GET并返回一个JSON对象。我错过了什么吗?

在此先感谢。

编辑

我检查了Firefox的控制台和回来解析错误:没有XML的位置找到.......

,我发现奇怪,因为服务器返回一个JSON对象,所以我取代了AJAX方法有以下:

function loadEmployees() { 
    $http.get('/AWEmployee/Index/GetEmployees') 
     .then(function(response) { 
       $scope.employees =response; 
      }); 

}; 

现在的反应是调用它的页面(索引)的HTML数据,而不是JSON对象!我假定在this post中建议的通信之间发生了一些事情。

当你使用JQuery来从服务器,而不是$http服务数据,而且是异步执行success功能,AngularJS不会反映在发生任何改变,迫使它,只是包装分配到$apply

function loadEmployees() { 
    $.ajax({ 
     url: "/AWEmployee/Index/GetEmployees", 
     method: "GET", 
     success:function (response) { 
      $scope.$apply(function(){ 
       $scope.employees = response["Name"]; 
      }); 
     } 
    }); 
} 
+0

我曾尝试用$ scope.apply包装,因为你提到,但仍然没有解决它。我添加了错误回调选项,提醒我是否被调用,并且确实如此。所以我决定在问题的编辑中提到。 – Luv2Learn

发现了这个问题,这是我的一个简单的错误。我打电话给http://localhost:53729/AWEmployees/Index/GetEmployees,这是不对的。我拿出索引页面,所以现在url看起来像http://localhost:53729/AWEmployees/GetEmployees,它完美的工作!