如何在客户端数据表(jquery)上处理asp.net 3.5 JSON响应?
我想用ASP.NET3.5和JSON中的AJAX加载datatables 我以前在ASP.Net 2.0和JSON中做过类似的工作,效果很好-主要原因是,在ASP.Net 3.5中,JSON响应中有一个下划线对象“d”,而在ASP.Net 2.0中没有 因此,在ASP.NET2.0中,我可以简单地调用我的ASP.Net站点,获得JSON响应,然后简单地将其添加到datatables上,就像原始JSON一样(并在对象中添加“数据”)。 在ASP.Net中,我不能简单地向我的JSON添加“Data:[Object]”,因为inbuild ASP.Net JSON解析器将像:{“d”:{“Data”:{Data HERE}}那样解析它。什么是datatables无法处理的如何在客户端数据表(jquery)上处理asp.net 3.5 JSON响应?,asp.net,json,datatables,Asp.net,Json,Datatables,我想用ASP.NET3.5和JSON中的AJAX加载datatables 我以前在ASP.Net 2.0和JSON中做过类似的工作,效果很好-主要原因是,在ASP.Net 3.5中,JSON响应中有一个下划线对象“d”,而在ASP.Net 2.0中没有 因此,在ASP.NET2.0中,我可以简单地调用我的ASP.Net站点,获得JSON响应,然后简单地将其添加到datatables上,就像原始JSON一样(并在对象中添加“数据”)。 在ASP.Net中,我不能简单地向我的JSON添加“Data:
$('#itemOverviewTable').dataTable({
"processing": true,
"bServerSide" : false,
"ajax":
{
url: "AjaxRequest.aspx/GetAllItems"
},
"columns": [
{ "data": "name" },
{ "data": "link" },
{ "data": "image" },
{ "data": "group" },
{ "data": "order" },
{ "data": "isVisible" }
]
});
及
我读到:
但这只有在我可以控制客户端ajax调用时才有用,而在datatables库中我不能控制客户端ajax调用
有什么想法吗?我找到了一个解决方案:
$('#itemOverviewTable').dataTable({
"processing": true,
"dom": "frtip",
"sAjaxSource": "AjaxRequest.aspx/GetAllItems",
"fnServerData": dataTableASP35AJAXConverter,
"columns": [
{ "data": "Name" },
{ "data": "Link" },
{ "data": "Image" },
{ "data": "Group" },
{ "data": "Order" },
{ "data": "IsVisible" }
]
});
}
function dataTableASP35AJAXConverter(sSource, aoData, fnCallback) {
$.ajax({
"dataType": 'json',
"contentType": "application/json; charset=utf-8",
"type": "POST",
"url": sSource,
"data": aoData,
"success":
function (msg) {
var json = jQuery.parseJSON('{"data" : ' + msg.d + '}');
fnCallback(json);
},
"error":
function (msg) {
alert(msg);
}
})
}
JSON看起来怎么样?(一个小例子)
$('#itemOverviewTable').dataTable({
"processing": true,
"dom": "frtip",
"sAjaxSource": "AjaxRequest.aspx/GetAllItems",
"fnServerData": dataTableASP35AJAXConverter,
"columns": [
{ "data": "Name" },
{ "data": "Link" },
{ "data": "Image" },
{ "data": "Group" },
{ "data": "Order" },
{ "data": "IsVisible" }
]
});
}
function dataTableASP35AJAXConverter(sSource, aoData, fnCallback) {
$.ajax({
"dataType": 'json',
"contentType": "application/json; charset=utf-8",
"type": "POST",
"url": sSource,
"data": aoData,
"success":
function (msg) {
var json = jQuery.parseJSON('{"data" : ' + msg.d + '}');
fnCallback(json);
},
"error":
function (msg) {
alert(msg);
}
})
}