从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"];
});
}
});
}
答
发现了这个问题,这是我的一个简单的错误。我打电话给http://localhost:53729/AWEmployees/Index/GetEmployees,这是不对的。我拿出索引页面,所以现在url看起来像http://localhost:53729/AWEmployees/GetEmployees,它完美的工作!
我曾尝试用$ scope.apply包装,因为你提到,但仍然没有解决它。我添加了错误回调选项,提醒我是否被调用,并且确实如此。所以我决定在问题的编辑中提到。 – Luv2Learn