我已经搜索并看到了很多解决方案,但我仍然没有取得任何进展。我在控制台中没有任何错误,并且从ajax请求中得不到任何回报。
这是动作方法代码:
[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控制台并找回了Parsing Error:在位置找不到XML .......
自从服务器返回一个JSON对象后,我发现这是奇怪的,所以我用以下内容替换了ajax方法:
function loadEmployees() {
$http.get('/AWEmployee/Index/GetEmployees')
.then(function(response) {
$scope.employees =response;
});
};
现在响应是调用它(Index)的页面的html数据,而不是JSON对象!我假设在this post中建议的通信之间发生了一些事情。
答案 0 :(得分:1)
当您使用JQuery从服务器而不是$http
服务获取数据时,而且success
函数是异步执行的,AngularJS不会反映发生的任何更改,强制它,只需将分配包装到$apply
:
function loadEmployees() {
$.ajax({
url: "/AWEmployee/Index/GetEmployees",
method: "GET",
success:function (response) {
$scope.$apply(function(){
$scope.employees = response["Name"];
});
}
});
}
答案 1 :(得分:0)
发现问题,这是我的一个简单错误。我打电话给http://localhost:53729/AWEmployees/Index/GetEmployees这是不对的。我拿出了索引页面,所以现在网址看起来像http://localhost:53729/AWEmployees/GetEmployees而且效果很好!