我正在嘗試使用數據庫中保存的json來格式化jQuery DataTable。我在響應中的隱藏字段中將json傳遞給客戶端。然後我試着用下面的JS初始化的數據表:jQuery數據表json初始化無效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(我剛剛複製的,我用它來填補分貝JSON初始化表的SQL:
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'
下面的行失敗(與無效的JSON錯誤):
var json = $.parseJSON(jsoninittext);
因此第二警報(點二)從來沒有運行,因此它不會到DataTable()函數。它看起來好像函數定義(包含大括號)導致json無效。 有誰知道我怎麼能格式化數據表初始化JSON,以便它可以繼續包含一個函數定義的jQuery數據表如預期,但仍然是有效的JSON(有某種形式的逃避,我可以使用)? 非常感謝。
非常感謝信息,我圍繞這個問題編碼(見下文) – DEH 2011-02-09 09:46:12