Jquery 无法使用ajax从数据库中获取数据
我正在开发一个ASP.NETMVC应用程序。我想使用ajax从数据库中获取数据。它不会在网页中加载数据,而且控制台窗口上没有错误,在VisualStudio中也不例外。 下面是我的控制器代码Jquery 无法使用ajax从数据库中获取数据,jquery,asp.net,ajax,asp.net-mvc,Jquery,Asp.net,Ajax,Asp.net Mvc,我正在开发一个ASP.NETMVC应用程序。我想使用ajax从数据库中获取数据。它不会在网页中加载数据,而且控制台窗口上没有错误,在VisualStudio中也不例外。 下面是我的控制器代码 [HttpGet] public JsonResult GetCompanies() { try { IEnumerable<Company> company = _companyService.GetCompani
[HttpGet]
public JsonResult GetCompanies()
{
try
{
IEnumerable<Company> company = _companyService.GetCompanies().ToList();
IEnumerable<CompanyListViewModel> viewModelListCompanies = Mapper.DynamicMap<IEnumerable<Company>, IEnumerable<CompanyListViewModel>>(company);
return new JsonSuccessResult(viewModelListCompanies);
//return Json(accountTypes, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
Response.StatusCode = (int)ResponseCode.UnprocessableEntity;
return new JsonErrorResult(ex.ToString());
}
}
[HttpGet]
public JsonResult GetCompanies()
{
尝试
{
IEnumerable company=_companyService.getcompanys().ToList();
IEnumerable ViewModelListCompanys=Mapper.DynamicMap(公司);
返回新的JsonSuccessResult(ViewModelListCompanys);
//返回Json(accountTypes,JsonRequestBehavior.AllowGet);
}
捕获(例外情况除外)
{
Response.StatusCode=(int)ResponseCode.UnprocessableEntity;
返回新的JsonErrorResult(例如ToString());
}
}
在我看来,这就是代码
<div class="row">
<div class="col-md-9">
<div class="block">
<div class="header">
<h2>Sortable table</h2>
</div>
<div class="content">
<table cellpadding="0" cellspacing="0" width="100%" class="table table-bordered table-striped sortable" id="myDbTable">
<thead>
<tr>
<th data-hide width="20%">ID</th>
<th data-hide width="20%">Name</th>
<th data-hide width="20%">E-mail</th>
<th data-hide width="20%">Phone</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
</div>
}
@section Scripts{
<script>
var DataColumnsCount = 4;
//***Start Fatching Data for datatable *** start //
$.ajax({
type: 'POST',
url: @Url.Action("GetCompanies","Company"),
dataType: 'json',
data: "{}",
success: fetchCompanyTableList});
function fetchCompanyTableList() {
$('#myDbTable').DataTable({
ajax: {
url: @Url.Action("GetCompanies", "Company"),
type: "GET",
dataType: "json",
dataSrc: 'DataSet',
},
"columns": [
{"data" : "Id"},
{ "data": "Name" },
{ "data": "Email" },
{ "data": "Owner" }
],
"aoColumnDefs": [
{
"aTargets": [DataColumnsCount],
"mData": null,
"bSortable": false,
"mRender": function (data, type, fullRow) {
return '<th width="20%"><a href="#">Details</a></th>';
}
}
]
}
);
}
可排序表
身份证件
名称
电子邮件
电话
}
@节脚本{
var DataColumnsCount=4;
//***开始为datatable***开始填充数据//
$.ajax({
键入:“POST”,
url:@url.Action(“GetCompanys”、“Company”),
数据类型:“json”,
数据:“{}”,
成功:fetchCompanyTableList});
函数fetchCompanyTableList(){
$('#myDbTable').DataTable({
阿贾克斯:{
url:@url.Action(“GetCompanys”、“Company”),
键入:“获取”,
数据类型:“json”,
dataSrc:“数据集”,
},
“栏目”:[
{“数据”:“Id”},
{“数据”:“名称”},
{“数据”:“电子邮件”},
{“数据”:“所有者”}
],
“aoColumnDefs”:[
{
“aTargets”:[DataColumnSunt],
“mData”:空,
“可移植”:错误,
“mRender”:函数(数据、类型、全行){
返回“”;
}
}
]
}
);
}
我无法找出我到底做错了什么。请有人在这方面提供帮助。您在操作中使用
[HttpGet]
意味着在操作中只允许httpGET
请求。
但是你的ajax
调用你使用的POST
请求。这在你的操作中是不可接受的。因此,如果你需要GET
请求,请将POST
更改为GET
,或者将[HttpGet]
更改为POST
请求
您不需要多个
ajax
调用。因此需要更改您的ajax调用,因为jquery datatable有自己的用于数据加载的ajax调用。您可以添加您的答案或链接。或者您可以关注YouTube视频。对于datatable,您需要将类型更改为[HttpPost]&在您的ajax中更改类型“POST”
作为一名开发人员,您需要将断点添加到您的控制器中&检查它是否被击中。
您还可以console.log()/查看浏览器开发人员工具中的结果您对Ajax请求的响应是什么?(在chrome上签入inspect->Network->XHR).it giving:未找到控制器的状态代码200 Ok和GetCompanies方法。这意味着它没有获取我的控制器GET代码..我现在应该做什么?第一个ajax中应该有回调函数-在您的第一个ajax中成功:函数(result){if(result!=null)//调用函数FetchCompanityTableList();}不需要第一次ajax调用。只需在datatable中使用ajax调用。通过更改类型来获取它是在dataset中获取数据,而不是在表中填充。您能告诉我为什么它没有显示在表中,以便我标记您的答案吗