【问题标题】:Jquery Datatables Ajax ResponseJquery 数据表 Ajax 响应
【发布时间】:2026-02-06 23:35:02
【问题描述】:

我正在尝试遵循找到 here 的 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 数据表的某些内容?

【问题讨论】:

  • 您是否包含必要的 jQuery 库文件?您可以为表格添加您的 html 代码吗?另外,看看这个datable reference。确保完全验证返回的 Json
  • 是的,jQuery 文件已按正确顺序包含在内。我的表格只包含一个表格,其中有几个 td 在列标题的 thead 内。我还检查了没有问题的响应,响应状态是否正确等,返回的数据与上面类似,来自该链接,该链接由错误消息生成。 :/ 仍然坚持这个...

标签: asp.net ajax jquery-datatables requesthandler


【解决方案1】:

由于jsonlint,我已经设法解决了我的问题。我通过它运行了我的代码,结果发现我的 jsHeader 中缺少一个“:”。所以我有的是:

private const string JsHeader = @"{{""data"" {0}}}";

而我现在所拥有的是:

private const string JsHeader = @"{{""data"": {0}}}";

希望这可以帮助遇到类似问题的其他人。

【讨论】: