2014-11-04 6 views
1

Я пытаюсь следовать примеру данных для источника данных Ajax (объектов), найденного here. Я использую asp.net и имею следующий обработчик, который получает мои данные, обрабатывает и предоставляет ответ.JQuery Datatables Ajax Response

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 = "[email protected]"; 
      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 - Invalid JSON ответ. Для получения дополнительной информации об этой ошибке, пожалуйста, см http://datatables.net/tn/1

Выведенных данные выглядят следующим образом,

{"data" [ 
{ 
"Id": 1, 
"FullName": "Admin", 
"Email": "[email protected]", 
"KeyResource": false 
}, 
{ 
"Id": 2, 
"FullName": "Jon", 
"Email": "[email protected]", 
"KeyResource": false 
}, 
{ 
"Id": 3, 
"FullName": "Stephen", 
"Email": "[email protected]", 
"KeyResource": false 
}, etc..... 

Пожалуйста, скажи мне, почему я получаю эту ошибку. Должен ли я манипулировать json-объектом по-разному, или я что-то пропускаю с данными JQuery datatables?

+0

Вы включаете необходимые файлы библиотеки jQuery? Не могли бы вы добавить свой html-код для таблицы? Кроме того, посмотрите на эту [ссылочную ссылку] (http://www.datatables.net/manual/tech-notes/1). Убедитесь, что вы полностью подтвердили возвращенный Json – Chris

+0

Да, файлы jQuery были включены в правильном порядке. Моя таблица просто содержит таблицу с несколькими td внутри thead для заголовков столбцов. Я также проверял ответ без проблем, статус ответа правильный и т. Д., Возвращаемые данные похожи на приведенные выше, следуя из этой ссылки, которые генерируются сообщением об ошибке. :/Все еще застрял с этим ... –

ответ

1

Мне удалось исправить мою проблему удивительно из-за jsonlint. Я пропустил свой код, и оказалось, что в моем jsHeader мне не хватает «:». Так что у меня был:

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

и то, что у меня сейчас, который теперь работает в:

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

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