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

时间:2017-03-07 01:32:44

标签: javascript asp.net angularjs json ajax

我已经搜索并看到了很多解决方案,但我仍然没有取得任何进展。我在控制台中没有任何错误,并且从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中建议的通信之间发生了一些事情。

2 个答案:

答案 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而且效果很好!