Asp.net jQuery Datatables AJAX请求未正确命中Web API
我正在尝试将ASP.NET Web API 2与jQuery Datatables 1.10.7集成 我想在我的Datatables中使用服务器端处理,因此我使用Nuget包Datatables.AspNet.WebApi2 这是我的javascriptAsp.net jQuery Datatables AJAX请求未正确命中Web API,asp.net,asp.net-web-api,datatables,Asp.net,Asp.net Web Api,Datatables,我正在尝试将ASP.NET Web API 2与jQuery Datatables 1.10.7集成 我想在我的Datatables中使用服务器端处理,因此我使用Nuget包Datatables.AspNet.WebApi2 这是我的javascript <script> $(document).ready(function () { $('#example').dataTable({ "serverSide": true,
<script>
$(document).ready(function () {
$('#example').dataTable({
"serverSide": true,
"ajax": "/api/StudentsBasicInfo/GetPaginatedStudentsList2",
columns: [
{
name: 'FirstName',
data: 'FirstName',
title: "First Name",
sortable: false,
searchable: false
},
{
name: 'LastName',
data: "LastName",
title: "Last Name",
sortable: false,
searchable: false
}
]
});
});
</script>
我还附上了另一张谷歌浏览器网络日志中我的请求的截图
您的
webapi控制器
方法在向webapi
发送ajax调用时,需要类型为IDataablesRequest
的对象,但您没有发送任何内容
您需要使用ajax
的data
参数发送IDataTablesRequest对象
。您可以使用javascript中的object
创建IDataTablesRequest的对象并发送到webapi
var request = new Object();
request.Length = 10;
request.Start = 1;
$('#example').dataTable( {
"ajax": {
"url": "/api/StudentsBasicInfo/GetPaginatedStudentsList2",
"data": request
}
});
如果您已将webapi方法修饰为HttpPost
,则可能还需要将属性类型设置为ajax
的POST
有关更多详细信息,请查看以下链接
public JsonResult<IDataTablesResponse> GetPaginatedStudentsList2(IDataTablesRequest request)
{
StudentsInfoHybrid searchObj = new StudentsInfoHybrid();
StudentsBasicInfoBL blClass = new StudentsBasicInfoBL();
try
{
searchObj.PageSize = request.Length;
searchObj.Offset = request.Start;
searchObj.count = false;
//get the list of students
var students = blClass.GetAllStudentsHybridInfo(searchObj);
//filter list according to the criteria passed in the request object
var filteredStudents = students.Where(i => i.FirstName.Contains(request.Search.Value)).ToList();
//reset page size and offset so that count of total objects can be obtained
searchObj.PageSize = 0;
searchObj.Offset = 0;
var totalCount = blClass.CountAllStudentsHybridInfo(searchObj);
var response = DataTablesResponse.Create(request, students.Count(), filteredStudents.Count(), filteredStudents);
return new DataTablesJsonResult(response, Request);
}
catch (Exception ex)
{
return null;
}
finally
{ }
}
{"Message":"An error has occurred.","ExceptionMessage":"A null value was returned where an instance of IHttpActionResult was expected."
var request = new Object();
request.Length = 10;
request.Start = 1;
$('#example').dataTable( {
"ajax": {
"url": "/api/StudentsBasicInfo/GetPaginatedStudentsList2",
"data": request
}
});