Jquery 调用函数返回';DataTables警告:表id=tblDataTable-JSON响应无效;
我有一个类Jquery 调用函数返回';DataTables警告:表id=tblDataTable-JSON响应无效;,jquery,json,web-services,asp.net-ajax,serverside-datatable,Jquery,Json,Web Services,Asp.net Ajax,Serverside Datatable,我有一个类DataTableResponse.vb,它具有以下结构: Public Class DataTableResponse Public draw As Integer Public recordsTotal As Integer Public recordsFiltered As Integer Public data As List(Of Restaurant) End Class 在我的aspx页面中,我的服务器端数据表使用存储过程(met
DataTableResponse.vb
,它具有以下结构:
Public Class DataTableResponse
Public draw As Integer
Public recordsTotal As Integer
Public recordsFiltered As Integer
Public data As List(Of Restaurant)
End Class
在我的aspx页面中,我的服务器端数据表使用存储过程(method.GetData包含5个参数)从db中获取餐厅列表,以及一些其他数据表属性,如ajaxDraw、OffsetValue、PagingSize、SearchBy、sortcolumn、sortDirection,这些属性来自用户选择的aspx页面
$(document).ready(function () {
//Once the document is ready call Bind DataTable
BindDataTable();
});
function BindDataTable() {
var mytable = $('#tblDataTable').DataTable({
"processing": true,
"serverSide": true,
//"dataSrc": "",
"ajax": {
url: "adminrestaurants.aspx/GetDataForDataTable", type: "post"
},
"columns": [
{
"data": "Title",
},
{
"data": "colorActive",
"render": function (data, type, row) { return "<i class='fa fa-fw fa-circle' style= color:" + data + "></i>" }
},
{
data: null,
className: "center",
defaultContent: '<a href="" class="edit btn btn-link">Edit</a>'
},
{
data: null,
className: "center",
defaultContent: '<a href="" class="view btn btn-link">View</a>'
},
{
data: null,
className: "center",
defaultContent: '<a href="" class="MenuImage btn btn-link"><i class="fas fa-utensils"></i></a>'
},
{
data: null,
className: "center",
defaultContent: '<a href="" class="RestImage btn btn-link"><i class="fa fa-image"></i></a>'
},
{
data: null,
className: "center",
defaultContent: '<a id="btn-delete" href="" class="delete btn btn-link"><i class="fa fa-trash"></i></a>'
},
],
'columnDefs': [{
'targets': [2, 3, 4, 5, 6], /* column index */
'orderable': false, /* true or false */
}],
rowId: 'Id',
"initComplete": function (settings, json) {
addDiv();
},
});
$(文档).ready(函数(){
//文档准备就绪后,调用Bind DataTable
BindDataTable();
});
函数BindDataTable(){
var mytable=$('#tblDataTable').DataTable({
“处理”:对,
“服务器端”:正确,
//“dataSrc”:“,
“ajax”:{
url:“adminrestaurants.aspx/GetDataForDataTable”,类型:“post”
},
“栏目”:[
{
“数据”:“标题”,
},
{
“数据”:“colorActive”,
“render”:函数(数据、类型、行){return'}
},
{
数据:空,
类名:“中心”,
默认内容:“”
},
{
数据:空,
类名:“中心”,
默认内容:“”
},
{
数据:空,
类名:“中心”,
默认内容:“”
},
{
数据:空,
类名:“中心”,
默认内容:“”
},
{
数据:空,
类名:“中心”,
默认内容:“”
},
],
“columnDefs”:[{
“目标”:[2,3,4,5,6],/*列索引*/
“医嘱内容”:false、/*true或false*/
}],
rowId:'Id',
“initComplete”:函数(设置,json){
addDiv();
},
});
当我调用web服务(asmx)类时,一切正常,但我决定将web服务转换为私有函数,如下所示:
<System.Web.Services.WebMethod()>
Public Shared Function GetDataForDataTable() As String
Dim method As New methods
Dim context As HttpContext = HttpContext.Current
context.Response.ContentType = "text/plain"
Dim columns As List(Of String) = New List(Of String)()
columns.Add("Title")
columns.Add("IsActive")
columns.Add("Edit")
columns.Add("View")
columns.Add("RestImages")
columns.Add("MenuImages")
columns.Add("delete")
Dim ajaxDraw As Int32 = Convert.ToInt32(context.Request.Form("draw"))
Dim OffsetValue As Int32 = Convert.ToInt32(context.Request.Form("start"))
Dim PagingSize As Int32 = Convert.ToInt32(context.Request.Form("length"))
Dim searchby As String = context.Request.Form("search[value]")
Dim sortColumn As String = context.Request.Form("order[0][column]")
sortColumn = "r." & columns(Convert.ToInt32(sortColumn))
Dim sortDirection As String = context.Request.Form("order[0][dir]")
Dim dt As DataTable = method.GetData(sortColumn, sortDirection, OffsetValue, PagingSize, searchby)
Dim recordTotal As Int32 = 0
Dim restaurants As List(Of Restaurant) = New List(Of Restaurant)()
If dt IsNot Nothing Then
For i As Integer = 0 To dt.Rows.Count - 1
Dim restaurant As Restaurant = New Restaurant()
restaurant.Id = If(Convert.IsDBNull(dt.Rows(i)("RID")), Nothing, Convert.ToInt32(dt.Rows(i)("RID")))
restaurant.Title = If(Convert.IsDBNull(dt.Rows(i)("Rtitle")), Nothing, Convert.ToString(dt.Rows(i)("Rtitle")))
restaurant.IsActive = If(Convert.IsDBNull(dt.Rows(i)("Ractive")), Nothing, Convert.ToInt32(dt.Rows(i)("Ractive")))
restaurant.colorActive = dt.Rows(i)("activeColor")
restaurants.Add(restaurant)
Next
recordTotal = If(dt.Rows.Count > 0, Convert.ToInt32(dt.Rows(0)("FilterTotalCount")), 0)
End If
Dim recordFiltered As Int32 = recordTotal
Dim objDataTableResponse As DataTableResponse = New DataTableResponse() With {
.draw = ajaxDraw,
.recordsFiltered = recordTotal,
.recordsTotal = recordTotal,
.data = restaurants
}
Return Newtonsoft.Json.JsonConvert.SerializeObject(objDataTableResponse.ToString)
End Function
作为字符串的公共共享函数GetDataForDataTable()
作为新方法的Dim方法
Dim context作为HttpContext=HttpContext.Current
context.Response.ContentType=“text/plain”
按列表(字符串的)调整列=新列表(字符串的)()
列。添加(“标题”)
列。添加(“IsActive”)
列。添加(“编辑”)
列。添加(“视图”)
columns.Add(“RestImages”)
列。添加(“菜单图像”)
列。添加(“删除”)
Dim ajaxDraw As Int32=Convert.ToInt32(context.Request.Form(“draw”))
Dim OffsetValue As Int32=Convert.ToInt32(context.Request.Form(“start”))
Dim PagingSize As Int32=Convert.ToInt32(context.Request.Form(“长度”))
Dim searchby As String=context.Request.Form(“搜索[值]”)
Dim sortColumn As String=context.Request.Form(“订单[0][列]”)
sortColumn=“r.”和列(转换为32(sortColumn))
Dim sortDirection As String=context.Request.Form(“订单[0][dir]”)
Dim dt As DataTable=method.GetData(sortColumn、sortDirection、OffsetValue、PagingSize、searchby)
Dim记录总计为Int32=0
作为(餐厅)名单的暗淡餐厅=新的(餐厅)名单()
如果dt不是什么,那么
对于i,整数=0到dt.Rows.Count-1
Dim restaurant As restaurant=新餐厅()
restaurant.Id=If(Convert.IsDBNull(dt.Rows(i)(“RID”)),Nothing,Convert.ToInt32(dt.Rows(i)(“RID”))
restaurant.Title=If(Convert.IsDBNull(dt.Rows(i)(“Rtitle”)),Nothing,Convert.ToString(dt.Rows(i)(“Rtitle”))
restaurant.IsActive=If(Convert.IsDBNull(dt.Rows(i)(“Ractive”)),Nothing,Convert.ToInt32(dt.Rows(i)(“Ractive”))
restaurant.colorActive=dt.Rows(i)(“activeColor”)
餐厅。添加(餐厅)
下一个
recordTotal=If(dt.Rows.Count>0,将.to转换为32(dt.Rows(0)(“FilterTotalCount”)),0)
如果结束
Dim recordFiltered为Int32=recordTotal
Dim objDataTableResponse As DataTableResponse=新的DataTableResponse(),带有{
.draw=ajaxDraw,
.recordsFiltered=recordTotal,
.recordsTotal=recordTotal,
.数据=餐厅
}
返回Newtonsoft.Json.JsonConvert.SerializeObject(objDataTableResponse.ToString)
端函数
页面加载时出现以下错误->'**DataTables警告:table id=tblDataTable-JSON响应无效。有关此错误的更多信息,请参阅
非常感谢您的帮助