Я пытаюсь форматировать jQuery DataTable с помощью json, хранящегося в базе данных. Я передаю json клиенту в скрытом поле в ответе. Затем я попробовать инициализацию DataTable со следующими ЯШАМИ:jQuery datatables json initialisation invalid json
function initDataTables(){
$('.datatable').each(function(i) {
// Look for a hidden field containing the json to use when initialising the datatable
var hiddenfieldkey = $(this).attr('id') + 'jsoninit'
var hiddenfield = $('#' + hiddenfieldkey);
if (hiddenfield.length > 0) {
// We have found some 'special' json formatting, so use it
var jsoninittext = $(hiddenfield).val();
alert(jsoninittext);
var json = $.parseJSON(jsoninittext);
alert('point two');
$(this).dataTable(json);
}
else {
// Standard datatable formatting
$(this).dataTable({
"bJQueryUI": true,
"sPaginationType": "full_numbers",
"aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
});
}
});
initDataTableButtons();
}
Это все работает отлично со следующим JSON (я просто скопировал SQL, который я использую, чтобы заполнить таблицу JSON инициализации в БДЕ:
update query set jQueryDatatableJSONInit=
'{
"iDisplayLength": 25
,"bJQueryUI": true
,"sPaginationType": "full_numbers"
,"aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
,"aoColumnDefs": [
{ "bVisible": false, "aTargets": [ 0,3,4 ] }
,{ "sClass": "nowrap", "aTargets": [ 2 ] }
,{ "iDataSort": 0, "aTargets": [ 1 ] }
,{ "bSortable": false, "aTargets": [ 2 ] }
]
}'
where id ='336f7ea2-173a-4b8f-af30-e217d1e1c628'
Тем не менее, проблема возникает, когда мой JSON включает в себя функцию, как показано ниже (то же самое, как и раньше, но включает в себя fnRender строку, содержащую функцию):
update query set jQueryDatatableJSONInit=
'{
"iDisplayLength": 25
,"bJQueryUI": true
,"sPaginationType": "full_numbers"
,"aLengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]]
,"aoColumnDefs": [
{ "fnRender": function (oObj) { return oObj.aData[2] +'' ''+ oObj.aData[3]+'' ''+ oObj.aData[4];},"aTargets": [ 2 ]}
,{ "bVisible": false, "aTargets": [ 0,3,4 ] }
,{ "sClass": "nowrap", "aTargets": [ 2 ] }
,{ "iDataSort": 0, "aTargets": [ 1 ] }
,{ "bSortable": false, "aTargets": [ 2 ] }
]
}'
where id ='336f7ea2-173a-4b8f-af30-e217d1e1c628'
следующая строка выходит из строя (с I nvalid JSON ошибка):
var json = $.parseJSON(jsoninittext);
и поэтому второе предупреждение (точка два) никогда не работает, поэтому он не получает функцию DataTable(). Мне кажется, что определение функции (содержащее фигурные скобки) приводит к тому, что json недействителен. Кто-нибудь знает, как я мог бы форматировать инициализацию jat для данных, чтобы он мог продолжать содержать определение функции, как ожидается, с помощью jQuery datatables, но это все равно будет действительным json (есть ли способ сортировки, который я мог бы использовать)? Большое спасибо.
Большое спасибо за информацию, я закодировал проблему (см. Ниже) – DEH