1

ここにある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 データテーブルで何か不足していますか?

4

1 に答える 1