ajax 调用后第 0 行第 0 列的请求未知参数'0'



我想在从服务器获取数据时使用服务器端渲染。当我单击数据表上的分页按钮时,我想从服务器上传新数据。所以我为此使用了下面的代码。但是我收到此错误 "数据表警告:表 id=MyDataTable - 第 0 行第 0 列的请求未知参数'公司名称'。有关此错误的详细信息,请参阅 http://datatables.net/tn/4" 始终。

public class HomeController : Controller
{
public async Task<ActionResult> Index()
{
return View();
}   
public async Task<JsonResult> GetEmployeeRecord(DataTablesParam param)
{
var a = await new CompanyService().Getlisttt(x => x.Phone1 == "12345688");
List<CompanyViewObject> List = new List<CompanyViewObject>();
int pageNo = 1;
if (param.iDisplayStart >= param.iDisplayLength)
{
pageNo = (param.iDisplayStart / param.iDisplayLength) + 1;
}
int totalCount = 0;

totalCount = a.Count();
List = a.Skip((pageNo - 1) * param.iDisplayLength).Take(param.iDisplayLength).Select(x => new CompanyViewObject
{
CompanyName = x.CompanyName,
Description = x.Description,
GlobalCompanyID = x.GlobalCompanyID,
Phone1 = x.Phone1,
CompanyTypeName = x.CompanyTypeName,
CompanyOwnershipName = x.CompanyOwnershipName,
CompanyIndustryName = x.CompanyIndustryName,
ParentID = x.ParentID,
Website = x.Website,
EMail = x.EMail,
Phone2 = x.Phone2,
Fax = x.Fax,
Confirmed = x.Confirmed,
Active = x.Active
}).ToList();

return Json(new
{
aaData = List,
sEcho = param.sEcho,
iTotalDisplayRecords = totalCount,
iTotalRecords = totalCount
});
}
}

我的视图页面是这个

<div class="row pt-10">
<div class="col-md-12">
<table class="display" id="MyDataTable">
<thead>
<tr>
<th>
CompanyName
</th>
<th>
Description
</th>
<th>
GlobalCompanyID
</th>
<th>
Phone1
</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>

<script>
$(document).ready(function () {

// $("#MyDataTable").DataTable();
BindDataTable();
})
var BindDataTable = function (response) {
var x;

$("#MyDataTable").DataTable({
"bServerSide": true,
"sAjaxSource": "/Home/GetEmployeeRecord",
"fnServerData": function (sSource, aoData, fnCallback) {               

$.ajax({
type: "Get",
data: aoData,
url: sSource,
success: fnCallback,
})

console.log(fnCallback);
},

"columns": [
{ "data": "CompanyName" },
{ "data": "Description" },                
{ "data": "Phone1" },
{ "data": "GlobalCompanyID" },
]
});
console.log(x);

}

</script>

提前致谢

编辑=当我像这样更改代码时,我没有收到错误,但我仍然无法在表上获取值

"columns": [
{ "data": 'aaData["CompanyName"]' },
{ "data": 'aaData["Description"]' },
{ "data": 'aaData["Phone1"]'},
{ "data": 'aaData["GlobalCompanyID"]' },

],    

我的 ajax 返回是这样的对象是这样的

{"sEcho":1,"iTotalDisplayRecords":137,"iTotalRecords":137,"aaData":[{"globalCompanyID":13,"companyTypeName":"Other","companyOwnershipName":"Other","companyIndustryName":"Engineering","parentID":0,"companyName":"ffff","website":"www.youtube.com","eMail":"support@micromarin.com","phone1":"12345688","phone2":"333333333333","fax":"7788554422","description":"Yeni kurulan bir firma","confirmed":true,"active":false},{"globalCompanyID":14,"companyTypeName":"Prospect","companyOwnershipName":"Public","companyIndustryName":"Agriculture","parentID":0,"companyName":"Company 1","website":"www.youtube.com","eMail":"support@micromarin.com","phone1":"12345688","phone2":"333333333333","fax":"7788554422","description":"Yeni kurulan bir firma","confirmed":true,"active":true},{"globalCompanyID":15,"companyTypeName":"Prospect","companyOwnershipName":"Public","companyIndustryName":"Agriculture","parentID":0,"companyName":"Company 2","website":"www.youtube.com","eMail":"support@micromarin.com","phone1":"12345688","phone2":"333333333333","fax":"7788554422","description":"Yeni kurulan bir firma","confirmed":true,"active":true},{"globalCompanyID":16,"companyTypeName":"Prospect","companyOwnershipName":"Public","companyIndustryName":"Agriculture","parentID":0,"companyName":"Company 3","website":"www.youtube.com","eMail":"support@micromarin.com","phone1":"12345688","phone2":"333333333333","fax":"7788554422","description":"Yeni kurulan bir firma","confirmed":true,"active":true},{"globalCompanyID":17,"companyTypeName":"Prospect","companyOwnershipName":"Public","companyIndustryName":"Agriculture","parentID":0,"companyName":"Company 4","website":"www.youtube.com","eMail":"support@micromarin.com","phone1":"12345688","phone2":"333333333333","fax":"7788554422","description":"Yeni kurulan bir firma","confirmed":true,"active":true},{"globalCompanyID":18,"companyTypeName":"Prospect","companyOwnershipName":"Public","companyIndustryName":"Agriculture","parentID":0,"companyName":"Company 5","website":"www.youtube.com","eMail":"support@micromarin.com","phone1":"12345688","phone2":"333333333333","fax":"7788554422","description":"Yeni kurulan bir firma","confirmed":true,"active":true},{"globalCompanyID":19,"companyTypeName":"Prospect","companyOwnershipName":"Public","companyIndustryName":"Agriculture","parentID":0,"companyName":"Company 6","website":"www.youtube.com","eMail":"support@micromarin.com","phone1":"12345688","phone2":"333333333333","fax":"7788554422","description":"Yeni kurulan bir firma","confirmed":true,"active":true},{"globalCompanyID":20,"companyTypeName":"Prospect","companyOwnershipName":"Public","companyIndustryName":"Agriculture","parentID":0,"companyName":"Company 7","website":"www.youtube.com","eMail":"support@micromarin.com","phone1":"12345688","phone2":"333333333333","fax":"7788554422","description":"Yeni kurulan bir firma","confirmed":true,"active":true},{"globalCompanyID":21,"companyTypeName":"Prospect","companyOwnershipName":"Public","companyIndustryName":"Agriculture","parentID":0,"companyName":"Company 8","website":"www.youtube.com","eMail":"support@micromarin.com","phone1":"12345688","phone2":"333333333333","fax":"7788554422","description":"Yeni kurulan bir firma","confirmed":true,"active":true},{"globalCompanyID":22,"companyTypeName":"Prospect","companyOwnershipName":"Public","companyIndustryName":"Agriculture","parentID":0,"companyName":"Company 9","website":"www.youtube.com","eMail":"support@micromarin.com","phone1":"12345688","phone2":"333333333333","fax":"7788554422","description":"Yeni kurulan bir firma","confirmed":true,"active":true}]}

我将以下代码添加到启动.cs在公共无效配置服务(IServiceCollection服务(中并解决了问题,我想控制器以前没有返回json格式。更新控制器返回 Json 后

Services.AddMvc().AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver())

这是服务器端数据表的基本结构,

function datatable(sSource, aoData, fnCallback){
var table = $('#tableID').DataTable({
dom: dom,
buttons : [
'excel', 'pdf', 'print',
],
lengthMenu: [[10, 25, 50, -1], [10, 25, 50, "All"]],
serverSide: true,
processing: true,
ajax: {
"url": sSource,
"type": "GET",
"data": aoData,
success: fnCallback
},
});
}

Ajax 请求是 GET 类型,data_function您需要传递任何参数,否则就离开它。

希望这有帮助!

我在启动中添加了下面的代码.cs问题就解决了;

Services.AddMvc().AddJsonOptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver())

最新更新