jQuery数据表排序不正确排序字符串日期时间

时间:2017-11-14 15:05:53

标签: jquery datatables

关于服务器端'有关于SO的问题。数据表,但我没有在我的DataTables插件功能中做任何服务器端。

我使用jquery插件Datatables.js来执行$ .ajax' get'请求,将返回的响应存储在隐藏变量中(稍后在我的应用程序中使用),并在html表中显示数据。除了初始排序顺序之外,一切都运行良好,我将其设置为日期列。然后我设置了“订单”#39;数据表的选项到' desc' (显示最近的日期,因此2017年10月10日将在2017年9月26日以上显示,依此类推)。问题似乎是我的日期响应以日期时间格式返回(2017-07-15 00:00:00.000),Datatables对其进行了错误排序,例如显示2017-10-04 00:00:00.000 2017-07-之后15 00:00:00.000,而不是相反。

我不太熟悉w / datatables插件,并且想知道是否有人有解决方案来解决这个问题,并且还有跨浏览器的修复程序。如果我能以某种方式转换这个' joined_date'那将是很好的。字段作为日期而不是日期时间。以下是我的代码:

$(document).ready(function() {

 jQuery.extend( jQuery.fn.dataTableExt.oSort, {
  "date-uk-pre": function ( a ) {
   var ukDatea = a.split('/');
   return (ukDatea[2] + ukDatea[1] + ukDatea[0]) * 1;
   },

   "date-uk-asc": function ( a, b ) {
    return ((a < b) ? -1 : ((a > b) ? 1 : 0));
   },

  "date-uk-desc": function ( a, b ) {
   return ((a < b) ? 1 : ((a > b) ? -1 : 0));
  }
  } );
 $.ajax({
    type: "GET",
    url: "https://sonosfarm.com/prod/authors.cfc?method=Authors",
    dataType: "json",
    cache: false,
    success: function(response){
        if(response.length != 0){
            $("#authorsHiddenVar").val("");
            $("#authorsHiddenVar").val(JSON.stringify(response));
            $("#Authors").DataTable({
                data: response,
                columns:[
                    {
                        data: 'author_id',
                        "render": function(data, type, row, meta){
                            if(type== 'display'){
                                data = '<a href="' + "author.html" + '">' + 
     data + '</a>';
                            }

                            return data;
                        }
                    },
                    {
                        data: 'joined_date' 
                    },
                    {data: 'country'}
                ],
                responsive: true,
                order: [1, 'desc']
            });

        }
        else{
            console.log("There was no response from server!");
        }
    },
    error: function(XMLHttpRequest, textStatus, errorThrown){
        console.log("An Ajax server error was returned");
        console.log(XMLHttpRequest);
        console.log(textStatus);
        console.log(errorThrown);
    }
 });

});

0 个答案:

没有答案