DataTables仅获取所选行的单元格的数组数据

时间:2015-12-03 02:49:39

标签: javascript jquery datatables

使用select插件,我试图使用rows().data()从所选行获取数据,但它提取的数据远远超过单元数据数组,我想提交该数据一个Ajax POST请求,但我收到了413错误,说'#34;请求实体太大"。

https://datatables.net/reference/api/rows().data()

var dataTable = $('#products').DataTable( {
  "processing": true,
  "ajax": "/products",
  "columns": [
    {
      "className": 'select-checkbox',
      "defaultContent": '<span style="display:none;">0</span>',
      "orderDataType": "dom-text",
      type: 'string'
    },
    {
      "data": "sku",
      "className": 'sku-value',
      "defaultContent": ""
    },
    {
      "data": "name",
      "className": 'name-value',
      "defaultContent": ""
    },
    {
      "data": "our_price",
      "className": 'our-price-value price',
      "defaultContent": 0
    },
    {
      "data": "sale_price",
      "className": 'sale-price-value price',
      "defaultContent": 0
    },
    {
      "data": "rrp_price",
      "className": 'rrp-price-value price',
      "defaultContent": 0
    },
    {
      "data": "similar_price",
      "className": 'similar-price-value price',
      "defaultContent": 0
    },
    {
      "data": "stores.one.store",
      "className": 'store-one store',
      "defaultContent": ""
    },
    {
      "data": "stores.two.store",
      "className": 'store-two store',
      "defaultContent": ""
    },
    {
      "data": "stores.three.store",
      "className": 'store-three store',
      "defaultContent": ""
    },
    {
      "data": "end_date",
      "className": 'end-date-value date',
      "defaultContent": ""
    },
    {
      "data": "updated_at",
      "className": 'updated-at-value date',
      "defaultContent": ""
     }
  ],
  "select": {
    "style":    'multi',
    "selector": 'td:first-child'
  },
});

var rowData = dataTable.rows( { selected: true } ).data();

但是从5个单元格中选择的3行中有一些非常小的值,Chrome开发工具会冻结试图加载它们,因为不知何故,该值也包含表格中的所有2200行。 :/

我的代码来自此处:https://datatables.net/extensions/select/examples/api/get.html

在rowData存在的对象中,一个数组与一堆其他函数混合在一起,该数组包含了我需要的所有数据,但我无法将其与其他所有数据分开。

rowData中的数据: enter image description here

我只想要那些前3行,即数组。

传递给:

$.post('/generate', rowData, function() {
    console.log('done');
});

1 个答案:

答案 0 :(得分:6)

API方法rows().data()返回类似于Array的对象,它也是DataTables API实例。

使用toArray() API方法将API实例转换为本机Javascript数组对象。

var rowData = dataTable.rows( { selected: true } ).data().toArray();
相关问题