Php 是否将URL添加到jQuery数据表数据集?

Php 是否将URL添加到jQuery数据表数据集?,php,jquery,mysql,ajax,datatables,Php,Jquery,Mysql,Ajax,Datatables,我有一个动态构建的jquery datatables,这意味着每一行都是使用php mysql数据库调用构建的。创建表本身没有问题,但有时我想向集合中显示的数据添加超链接 例如: ID | Date | Amount ---------------------------- 1 | April 1, 2011 | 3.95 2 | April 5, 2011 | 4.55 3 | May 9, 2011 | 19.32 关键是,上面的日期

我有一个动态构建的jquery datatables,这意味着每一行都是使用php mysql数据库调用构建的。创建表本身没有问题,但有时我想向集合中显示的数据添加超链接

例如:

ID   |    Date       |   Amount
----------------------------
1    | April 1, 2011 |  3.95
2    | April 5, 2011 |  4.55
3    | May 9, 2011   |  19.32 
关键是,上面的日期将是一个超链接,URL中的日期格式将是YYYY-mm-dd格式

当我这样做时,datatables希望将整个URL视为一个数据元素,因此会在事后对表进行任何排序


以前有人有过这个问题吗?我似乎在网上找不到任何东西。

我的猜测是,如果没有链接,这种排序很好,但因为专栏中有一个链接(html),所以它的工作方式与您预期的不一样。对我来说,这听起来似乎与日期关系不大,而与HTML关系更大

我发现:

要对非标准列进行排序,您可以定义特定的函数:在这里您可以找到一些函数:

在您的情况下,您可以这样定义自己的排序函数:

jQuery.fn.dataTableExt.oSort['my-date-asc']  = function(a,b) {
    var x = a.match(/date=(.*?)"/)[1].toLowerCase();
    var y = b.match(/title="(.*?)"/)[1].toLowerCase();
        x = x.replace(/-/g, '');
        y = y.replace(/-/g, '');
    return ((x < y) ? -1 : ((x > y) ?  1 : 0));
};

jQuery.fn.dataTableExt.oSort['title-string-desc'] = function(a,b) {
    var x = a.match(/date=(.*?)"/)[1].toLowerCase();
    var y = b.match(/date=(.*?)"/)[1].toLowerCase();
        x = x.replace(/-/g, '');
        y = y.replace(/-/g, '');
    return ((x < y) ?  1 : ((x > y) ? -1 : 0));
};
jQuery.fn.dataTableExt.oSort['my-date-asc']=函数(a,b){
var x=a.match(/date=(.*)/)[1].toLowerCase();
var y=b.match(/title=“(.*)/)[1].toLowerCase();
x=x。替换(/-/g,);
y=y。替换(/-/g',);
回报率((xy)?1:0);
};
jQuery.fn.dataTableExt.oSort['title-string-desc']=函数(a,b){
var x=a.match(/date=(.*)/)[1].toLowerCase();
var y=b.match(/date=(.*)/)[1].toLowerCase();
x=x。替换(/-/g,);
y=y。替换(/-/g',);
回报率((xy)?-1:0);
};
您可以在该列上使用fnRender()返回希望该列显示的任何html

bUseRendered: true,
fnRender: function(oObj) {
   var id = oObj.aData[0];
   var normalDate = oObj.aData[1];
   var amount = oObj.aData[2];
   var urlDate = oObj.aData[3];
   var isUrlDate = oObj.aData[4];

   if (isUrlDate) {
      return urlDate;
   }
   else {
      return normalDate;
   }
}
注意

bUseRendered: false
这告诉datatables“在排序时,此列使用传回的数据,而不是呈现的html”


oObj.aData从该行返回列数据。您可以返回两个额外的隐藏列,其中包含执行该逻辑所需的数据。然后,您的排序仍然有效,并且您还可以访问所需的url(如果存在)。

因此,日期列看起来像:?请帮助我理解,因为这将按顺序排序g YYYY-mm-dd日期。你能澄清你在找什么吗?这对你有帮助吗?@kasdega-它不按YYYY-mm-dd排序。我们的代码中有一个非常类似的情况。如果我有更多的东西,我会看看是否能找到它。对,我在上面提到过,但肯定相信有一种方法可以忽略html元素。尝试时很遗憾,我收到了同样的问题。我感谢你的帮助,并将继续四处寻找。