gpt4 book ai didi

jQuery数据表json初始化无效json

转载 作者:行者123 更新时间:2023-12-01 05:06:50 25 4
gpt4 key购买 nike

我正在尝试使用数据库中保存的 json 格式化 jQuery DataTable。我将 json 通过响应中的隐藏字段传递给客户端。然后我尝试使用以下 js 初始化数据表:

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(我可以使用某种转义)吗?非常感谢。

最佳答案

JSON 序列化不适用于存储函数。 JSON 本质上是一种序列化对象内数据成员的方法,而不是其内部过程。请参阅http://www.json.org/在“值”标题下(向下三个数字),查看哪些对象适合使用 JSON 进行序列化。

您可以将函数括在引号中以将其强制转换为字符串并对该数据成员运行 eval,但我通常不鼓励开发人员使用 eval()。

关于jQuery数据表json初始化无效json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4899685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com