【发布时间】:2017-06-18 08:00:58
【问题描述】:
我正在使用 jQuery DataTables 来显示来自 JSON 编码的 PHP 响应的信息。 JSON 响应包含对象“名称”。 “name”包含“Full Name”、“Last Name”、“ID”。我一直在使用columns 以我想要的方式显示数据,但是我遇到了一个我无法弄清楚的问题。
在下面的代码中,示例 1 工作正常,在按“姓氏”排序时将显示“全名”。但是,示例 2 根本不起作用。所需的输出将包含 HTML 呈现的显示并按“姓氏”排序。在示例 3 中,显示以我想要的方式呈现,但排序不正确。
有谁知道如何调整示例 2 以输出我正在寻找的内容(渲染和排序的数据)?
var oTable = $('#table').DataTable({
'ajax': {
url: 'PHP-file-returns-JSON.php',
type: "POST",
dataSrc: function ( data ) {
return data.cols;
},
data: function(d) {
///send additional values to POST
var frm_data = $('#val1, #val2').serializeArray();
$.each(frm_data, function(key, val) {
d[val.name] = val.value;
});
}
},
'columns':[
// exapmle 1 - works but not rendered with HTML
{ data: {
_: "name.Full Name",
sort: "name.Last Name",
}
},
// example 2 not working at all
{ data: 'name', "render": function ( data, type, row ) {
return '<span id="'+data.ID+'">'+data.Full Name+'</span>';
},
"sort" : "name.Last Name",
},
// example 3 works fine with HTML rendered display but not sorted
{ data: 'name', "render": function ( data, type, row ) {
return '<span id="'+data.ID+'">'+data.Full Name+'</span>';
}
},
]
});
更新:
HERE 是显示我正在使用的数据结构的 JSFiddle。工作示例仅显示按姓氏排序的全名。我试图弄清楚如何使显示包含一个以 ID 作为 id 属性的 span 元素。
【问题讨论】:
-
从所有示例中我发现问题在于,为了允许数据表的顺序,它们不会在单元格中创建任何额外的标签,那么为什么您尝试只将 id 添加到 td 并且不使用跨度?,用你的例子 1
-
你能设计一个简单的 JSFiddle 来说明你的用例吗?例如,您的表格是否有 3 列?您可以只使用简单的 JSON 对象作为数据源来模拟 ajax 返回。
-
@annoyingmouse 我不确定如何使用 JSFiddle 设置 JSON 响应。但是,我的代码示例应该只显示一列,其中包含呈现为 HTML 的全名。我只是展示了 3 个示例,以便人们更好地了解我正在尝试做什么。
标签: jquery json sorting datatables