Javascript 来自Angularjs的MVC控制器方法调用返回视图HTML而不是JSON结果
我在Javascript 来自Angularjs的MVC控制器方法调用返回视图HTML而不是JSON结果,javascript,angularjs,json,ajax,asp.net-mvc,Javascript,Angularjs,Json,Ajax,Asp.net Mvc,我在HomeController下有以下控制器方法 [HttpGet] public ActionResult GetStudents() { Student std1 = new Student(); List<Student> stdlst = new List<Student>(); std1.Id = 1; std1.Name = "Em
HomeController
下有以下控制器方法
[HttpGet]
public ActionResult GetStudents()
{
Student std1 = new Student();
List<Student> stdlst = new List<Student>();
std1.Id = 1;
std1.Name = "Emmanuvel";
std1.Age = 25;
stdlst.Add(std1);
Student std2 = new Student();
std2.Id = 2;
std2.Name = "Michael";
std2.Age = 24;
stdlst.Add(std2);
Student std3 = new Student();
std3.Id = 3;
std3.Name = "Hannah";
std3.Age = 22;
stdlst.Add(std3);
return Json(stdlst, JsonRequestBehavior.AllowGet);
}
请帮助我理解我在这段代码中犯的错误 我会在那里做很多改变。 首先从视图中分离角度代码。您这样做可能是为了能够使用Razor语法来构建URL,但现在您对它有了依赖 我要做的是:
完成所有这些操作后,首先通过自己调用“/Home/GetStudents”URL在浏览器中检查是否收到了正确的数据。一旦确定,然后添加一些断点,确保Angular正确接收数据,然后从那里继续。HTML代码中有什么内容?这可能是一个例外页面,而不是实际结果吗?例如,如果您的@Url.Action()未被处理,服务器将返回某种类型的
路由未找到
,它将出现在开发人员的“帮助”页面中,该页面是HTML。。。只是一个想法我在html中只有一个按钮来调用Ajax函数,控制台日志返回html代码,我更新了问题什么日志打印。将您的操作方法签名从ActionResult更改为JsonResult,以明确。另外,您是否没有使用区域。如果我在Html代码中添加@Html.Action(“GetStudents”,“Home”),它将返回json数据以及完整的Html,这很烦人:(可能检查浏览器发出的http请求(例如,在Chrome的网络选项卡中)当触发此调用时。如果它以某种方式调用了错误的URL,那么服务JSON的内容可能是服务于应用程序的索引页,而不是返回错误代码。
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular.min.js"></script>
<script type="text/javascript">
var app = angular.module('MyApp', [])
app.controller('MyController', function ($scope, $http, $window) {
$scope.ButtonClick = function () {
$http.get('@Url.Action("GetStudents","Home")')
.success(function (data) {
$scope.students = data;
console.log($scope.students);
})
.error(function (data) {
console.log(data);
});
}
});
</script>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width"/>
<title>Index</title>
</head>
<body>
<div ng-app="MyApp" ng-controller="MyController">
<input type="button" value="Submit" ng-click="ButtonClick()"/>
</div>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.9/angular.min.js"></script>
<script type="text/javascript">
var app = angular.module('MyApp', [])
app.controller('MyController', function ($scope, $http, $window) {
$scope.ButtonClick = function () {
$http.get('/Home/GetStudents')
.success(function (data) {
$scope.students = data;
console.log($scope.students);
})
.error(function (data) {
console.log(data);
});
}
});
</script>
</body>
</html>