PHP 数据表 / ajax : <td> 在数据中



我需要更新一个旧的项目 - 它具有自己的后端,并且确实将行数据传递为一个数组,该数组被显示为标准HTML表。

行阵列中的最后一个属性默认为"编辑列",这意味着,它包含这样的编辑标记:

$aData = array(
    "first_name"    => "John",
    "last_name"     => "Connor",
    "edit_columns"  => "<a href='#' class='edit'>Edit</a>"
);

问题 - 我的后端也有表格,它将提供几个带有类似数组数据的表单元(曾经是HTML表(:

$aData = array(
    "first_name"    => "John",
    "last_name"     => "Connor",
    "edit_columns"  => "<a href='#' class='edit'>Edit</a> </td><td> <a href='#' class='delete'>Delete</a>"
);

问题:DataTables插件将将edit_columns视为一个单元格,并过滤</td><td>标记,该标记在一个单元格内导致2个超链接。

我知道我需要重构数据,但是我的客户希望将后端数据保持不变。因此 - 是否有一种方法可以根据需要"移动"单元格数据?

取决于您使用的DataTables版本,可以使用JavaScript收听xhr.dt- event,然后在数据呈现之前修改/拆分数据。

myTable.on('xhr.dt', function (e, settings, json, xhr) {
  let data = json.data;
  for ( let i=0, dataLength=data.length; i<dataLength; i++ ) {
    let edit_columns = data[i].edit_columns.split("</td><td>");
    data[i].edit_column = edit_columns[0];
    data[i].delete_column = edit_columns[1];
  }
});

现在,您可以在表中使用创建的数据列(edit_columndelete_column(,就像它们是常规列一样而无需修改后端/Serverside上的代码。

最新更新