DataTables - 返回ajax数据的格式

时间:2015-02-19 21:38:49

标签: javascript jquery ajax jquery-datatables

我正在使用DataTables.net上的this example,但我已经进行了修改,以便我可以使用我的API调用ajax。

我的问题是我的API返回像这样的DateTime值......

创建= 2015-02-13T00:00:00

我需要能够将其转换为只是没有时间表的日期(希望不更改API)。我尝试过所有我想知道的事情。我仍然是这个高级javascript的初学者。我试图做一个简单的子串,但我不认为这是有效的。好吧,至少我是怎么尝试的。

感谢您的帮助!


DataTables v1.10.5

Jquery v1.11.2(由于需要支持IE8)

原始问题代码:

$(document).ready(function () {
var table = $('#AllHuddleRecords').DataTable({
    "ajax": "../api/huddle/posts",
    "columns": [
        {
            "className": 'details-control',
            "orderable": false,
            "data": null,
            "defaultContent": ''
        },
        { "data" : "EmpName" },
        { "data": "Created" },
        { "data" : "PriorityName" },
        { "data" : "TopicName" }
    ]
});

感谢cmxl的指导......这是工作代码......

var table = $('#AllHuddleRecords').DataTable({
    "ajax": "../api/huddle/posts",
    "columns": [
        {
            "className": 'details-control',
            "orderable": false,
            "data": null,
            "defaultContent": ''
        },
        { "data" : "EmpName" },
        { "data": "Created" },
        { "data" : "PriorityName" },
        { "data" : "TopicName" }
    ],
    "columnDefs": [
        {
            "render" : function (data, type, row) {
                return new Date(data).toLocaleString();
            },
            "targets": 2
        }
        ]
});

2 个答案:

答案 0 :(得分:3)

您可以挂钩列呈现事件。请参阅此处的文档: https://datatables.net/examples/advanced_init/column_render.html

    $(document).ready(function() {
    $('#example').dataTable( {
        "columnDefs": [
            {
                // The `data` parameter refers to the data for the cell (defined by the
                // `data` option, which defaults to the column being worked with, in
                // this case `data: 0`.
                "render": function ( data, type, row ) {
                    return data.slice(0, data.indexOf('T'));
                },
                "targets": 0
            },
            { "visible": false,  "targets": [ 3 ] }
        ]
    } );
} );

或者,如果您想将字符串解析为日期,可以在此处参考此答案: Converting string to date in js

//...
"render": function ( data, type, row ) {
    return new Date(data).toString();
}
//...

在这里,您可以更深入地了解Javascript中的Date对象: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Date

答案 1 :(得分:0)

在将数据发送到数据表之前,是否可以对数据进行一些预处理,例如,如果要将以下数据插入数据表,请对数据的每个元素使用Date.parse()转换为所需的格式?

var ajaxData = {
  "data": [{
    "EmpName": "Bob",
    "Created": "2015-02-13T00:00:00",
    "PriorityName": "Priority1",
    "TopicName": "Topic1"
  }]
};

$(ajaxData.data).each(function() {
  var dateMillis = new Date(this.Created);
  this.Created = dateMillis.getMonth() + "/" + dateMillis.getDay() + "/" + dateMillis.getFullYear();

});

请注意,如果要对日期列进行排序,那么解决方案可能是使用Date.parse()预处理数据并将日期转换为毫秒,然后使用render将日期转换为可读格式为cmxl建议。祝你好运!