Jquery Datatables Ajax Response

Я пытаюсь следовать приведенному здесь примеру источника данных (объектов) 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: table 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?

1 ответ

Мне удалось исправить мою проблему удивительно благодаря jsonlint. Я пропустил свой код и оказалось, что в моем jsHeader пропущен символ ":". Итак, что у меня было:

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

и то, что у меня сейчас, что сейчас работает, это:

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

Надеюсь, что это поможет любому другому, сталкивающемуся с подобной проблемой.

Другие вопросы по тегам