我正在尝试遵循此处找到的 Ajax 数据源(对象)的数据表示例。我正在使用 asp.net 并具有以下处理程序,它接收我的数据、处理它并提供响应。
public class UsersHandler : IHttpHandler
{
private const string JsHeader = @"{{""data"" {0}}}";
public void ProcessRequest(HttpContext context)
{
IEnumerable<SystemUser> data = SystemUserLogic.LoadAllSystemUsers();
List<SimpleUser> userlist = new List<SimpleUser>();
foreach (SystemUser su in data)
{
SimpleUser simple = new SimpleUser();
simple.Id = su.Id;
simple.FullName = su.NameFirst;
simple.Email = "example@email.co.uk";
userlist.Add(simple);
}
string json = JsonConvert.SerializeObject(userlist, Formatting.Indented);
context.Response.ContentType = "text/plain";
context.Response.ContentEncoding = Encoding.UTF8;
context.Response.Cache.SetNoStore();
context.Response.Expires = -1;
context.Response.Write(String.Format(JsHeader, json));
}
当我在浏览器中捕获它并通过网络流量查看数据时,它会提供正确的响应。我的 aspx 页面包含以下内容。
$('#table_id').DataTable({
"ajax": '/Handlers_New/UsersHandler.ashx',
"columns": [
{ "data": "Id" },
{ "data": "FullName" },
{ "data": "Email" },
{ "data": "KeyResource" }
]
});
但是,当页面加载时,我收到此错误:
DataTables 警告:表 id=table_id - JSON 响应无效。有关此错误的更多信息,请参阅http://datatables.net/tn/1
输出的数据是这样的,
{"data" [
{
"Id": 1,
"FullName": "Admin",
"Email": "example@email.co.uk",
"KeyResource": false
},
{
"Id": 2,
"FullName": "Jon",
"Email": "example@email.co.uk",
"KeyResource": false
},
{
"Id": 3,
"FullName": "Stephen",
"Email": "example@email.co.uk",
"KeyResource": false
}, etc.....
请告诉我为什么会收到此错误。我应该以不同的方式操作 json 对象,还是我错过了 Jquery 数据表的某些内容?