2014-07-18 2 views
0

Я пытался получить эту работу навсегда и действительно не могу заставить его работать :(Jquery DataTables заселить данные JSON

Я строю приложение MVC 5 и строку JSON из контроллера выглядит следующим образом:

[{ "Action_Comment_ID": 9, "action_id": 36, "Комментарий": "Test commrnt", "MODIFIED_BY": NULL, "MODIFIED_DATE": NULL, "CREATED_BY": "bb1222b0-699e «Ddd-a»), «Дата создания»: «/ Дата (1420066800000) /«}]

И я вижу, что, запустив alert (JSON.stringify (data));

Данные, которые могут быть заполнены методом щелчка, я вызываю контроллер с помощью Ajax.

$.ajax({ 
    url: '/Case/ActionDetails/', 
    data: JSON.stringify(Action), 
    type: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    success: function (data) { 

     acTable.fnClearTable(); 

     alert(JSON.stringify(data)); 

     acTable.fnAddData(data); 

     console.debug(JSON.stringify(data)); 
    } 
}); 

Как я могу извлечь данные из строки JSON и добавить его в DataTable. Я хочу извлечь каждое поле самостоятельно, потому что я хочу делать что-то с каждым отдельным полем.

Дата создания файла должно быть разобрано с помощью этого метода f.ex

created_date = new Date(parseInt(SOMEVARIABLE.replace("/Date(", "").replace(")/", ""), 10)); 

И я хочу, чтобы поля, чтобы показать различные данные в зависимости от записи, были изменены и т.д.

Она также может быть несколько записей возвращаются, так что если добавить еще несколько записей будут выглядеть следующим образом:

[{ "Action_Comment_ID": 9, "action_id": 36, "комментарий": "Тест комментарий 1", "MODIFIED_BY" : п лный, "MODIFIED_DATE": NULL, "CREATED_BY": "bb1222b0-699e-4d6a-81fc-04ff68c8c5c6", "CREATED_DATE": "/ Дата (1420066800000) /"}, { "Action_Comment_ID": 11, "action_id": 36 , «Комментарий»: «Тест комментарий 2», «Modified_by»: null, «Modified_date»: null, «Created_by»: «bb1222b0-699e-4d6a-81fc-04ff68c8c5c6», «Created_date»: «/ Date (1388530800000))/"}, {" Action_Comment_ID ": 12,« Action_ID »: 36,« Комментарий »:« Тест комментарий 3 »,« Modified_by »:« bb1222b0-699e-4d6a-81fc-04ff68c8c5c6 »,« Modified_date »: "/ Дата (+1405634400 тысяч) /", "CREATED_BY": "bb1222b0-699e-4d6a-81fc-04ff68c8c5c6", "CREATED_DATE": "/ Дата (1405548000000) /"}]

+0

JQuery Datatables может сделать это для вас http://datatables.net/manual/server-side – Baximilian

+0

JQuery Datatables - это то, что я использую. Мне нужно немного больше информации о том, как это сделать. Стол уже инициализирован, потому что он должен быть доступен, чтобы открыть пустой стол и добавить новые записи там – stibay

ответ

1

Вот небольшой DEMO

$.ajax({ 
url: '/Case/ActionDetails/', 
//data: JSON.stringify(Action), //I Didn't send any data 
type: 'POST', 
contentType: 'application/json; charset=utf-8', 
success: function() { 
    $(result).each(function(){ 
     acTable.fnAddData([this.Comment]); 
    }) 
    } 
}); 

[this.Comment] В этом массиве необходимо добавить значения столбцов в том же порядке, что и ваши столбцы.

+0

Thats working perfect! Большое спасибо. Есть ли простой способ проверить, является ли его пустым? Объект данных выглядит так, когда в нем ничего нет: {«Данные»: []} Так как я получаю сообщение об ошибке, если данные пустые – stibay

+0

@stibay Лучшая идея, так как для меня она должна возвращать пустые данные и непустые в одном и том же формат. empty {"Data": []}/notempty {"Data": [column1: value1, ...]}, тогда вам нужно изменить '$ (result) .each' на' $ (result.data) .each' – Baximilian

+0

Хорошо, спасибо. Из вашего предложения я изменил его на abit в контроллере, чтобы он ничего не возвращал, когда он пуст. – stibay

Смежные вопросы