Javascript Angularjs http从ASP.NET获取
单击按钮“获取数据”后,我想获取员工列表。但JS脚本不调用公共JsonResult GetDataJavascript Angularjs http从ASP.NET获取,javascript,asp.net,angularjs,Javascript,Asp.net,Angularjs,单击按钮“获取数据”后,我想获取员工列表。但JS脚本不调用公共JsonResult GetData 为什么js不调用公共JsonResult GetData错误在哪里 如何在“public JsonResult GetData(int id)”中传递参数 家庭控制器: namespace AngularJS.Controllers { public class HomeController : Controller { // // GET: /Home/ public
namespace AngularJS.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
[HttpGet]
public JsonResult GetData(int id)
{
List<Employee> employees = new List<Employee>();
employees.Add(new Employee{Name="Jhon"});
employees.Add(new Employee{Name="Rick"});
return Json(employees, JsonRequestBehavior.AllowGet);
}
}
public class Employee
{
public string Name { get; set; }
}
}
Index.cshtml:
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<script src="~/Scripts/CustomScripts/MyScript.js"></script>
<script src="~/Scripts/moment.js"></script>
<link rel="stylesheet/less" type="text/css" href="~/Scripts/CustomScripts/style.less">
<script src="~/Scripts/less-1.5.1.js" type="text/javascript"></script>
<li ng-repeat="employee in Employees">
{{employee.name}}
</li>
<button ng-click="getData()">Get Data</button>
@{
ViewBag.Title=“Index”;
}
指数
{{employee.name}
获取数据
假设您在MVC中保留了默认路由配置,请尝试以下操作:
$scope.getData = function (id) {
$http({ method: 'GET', url: '/Home/GetData/' + id }).
success(function (data, status, headers, config) {
//$scope.Employees = [{ name: 'Jhon' }, { name: 'Rick' }];
}).
error(function (data, status, headers, config) {
alert('error');
});
};
并将id从视图传递给
getData
函数。您应该在$http get调用中将其作为参数传递
$http({ method: 'GET', url: '/Home/GetData', params: { id: id } })
能否显示web api路由配置?从何处加载
angular.js
?我看不到。您是否尝试过直接从浏览器的地址栏调用URL?它有用吗?如果你在mvc操作中设置了一个断点,它会被击中吗?@fikkatra这是一个控制器,而不是一个ApicController。这将是常规路由,而不是web api路由。从webmethod中删除参数,然后使用相同的$http调用,如果它调用webmethod,则意味着您也需要传递参数。要传递参数,请使用$http对象的第三个参数。这将附加id作为查询参数。这将起作用,因为如果在url中找不到id,MVC将尝试在查询字符串中查找id。但是,这将导致不同的url:/Home/GetData?id=123,而不是/Home/GetData/123。根据首选的url,使用参数或将id直接附加到url@fikkatra我知道。。如果默认路线如您所说正确设置,则应如您所建议的那样。。但在这种情况下,上述方法显然会起作用……没错。我只是想帮助OP在我们的解决方案之间做出明智的选择。@fikkatra如果您有针对性地问我,那么我宁愿使用您在WebAPI+1中建议的格式。。
$http({ method: 'GET', url: '/Home/GetData', params: { id: id } })