如何将一个 ajax 数据源与多个 JQuery 数据表一起使用

Posted

技术标签:

【中文标题】如何将一个 ajax 数据源与多个 JQuery 数据表一起使用【英文标题】:How to use one ajax datasource with multiple JQuery Datatables 【发布时间】:2021-04-06 06:39:22 【问题描述】:

同一页面上有两个数据表,并且都有不同的列。

有没有办法使用同一个 ajax 数据源来绘制多个表格?我正在尝试避免多次调用数据库。

 $('#gvData').DataTable(
            "processing": true,
            //"serverSide": true,
            "bPaginate": false,
            "bFilter": false,
            "bInfo": false,
            "scrollY": "300px",
            "scrollCollapse": true,
            "bDestroy": true,

            "ajax": 
                "dataType": 'json',
                "contentType": "application/json",
                "type": "POST",
                "url": "myform.aspx/GetData",
                "data": function (d) 
                    return " regDate: '" + regDate + "', cmdName: '" + command + "'";

                ,
                "dataSrc": function (json) 
                    adata = json;
                    return $.parseJSON(json);
                
            ,

            "columns": [
                "data": "Source_Name"
            ,
              
                  "data": "Record_Count",
                  "fnCreatedCell": function (nTd, sData, oData, iRow, iCol) 
                      $(nTd).html("<a href='" + oData.Record_Count + "' id= '" + iRow + "' style='color: black; text-decoration: none;' onclick='return GetSelectedRow(this, 'completed');' >" + oData.Record_Count + "</a>");
                  
              
            ]
        );

【问题讨论】:

【参考方案1】:

由于 DataTables 已经使用 jQuery,您可以使用 jQuery 的when() 获取一次数据,然后重新使用它。

在我的示例中,我的 JSON 如下所示:


  "employees": [
    
      "id": "1",
      "name": "Tiger Nixon",
      "position": "System Architext",
      "salary": "$320,800",
      "start_date": "2011/04/25",
      "office": "Edinburgh",
      "extn": "5421",
      "toggle": "on"
    ,
    
      "id": "2",
      "name": "Garrett Winters",
      "position": "Accountant",
      "salary": "$170,750",
      "start_date": "2011/07/25",
      "office": "Tokyo",
      "extn": "1278",
      "toggle": "off"
    
  ]

我有两个不同列的表:

    <table id="demo_one" class="display dataTable cell-border" style="width:100%">
        <thead>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Start date</th>
                <th>Salary</th>
            </tr>
        </thead>
    </table>

    <br><br>

    <table id="demo_two" class="display dataTable cell-border" style="width:100%">
        <thead>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Extn.</th>
            </tr>
        </thead>
    </table>

我使用一个ajax函数来获取数据,我调用它如下所示:

var dataSet = [];
 
function ajax() 
  return $.ajax(
    url: "http://localhost:7000/employees",
    success : function(data) 
      dataSet = data.employees;
    ,
    type: "POST"
  );


$(document).ready(function() 

  $.when(ajax()).done(function() 

    $('#demo_one').DataTable( 
      "data": dataSet,
      columns: [
         data: "name" ,
         data: "position" ,
         data: "start_date" ,
         data: "salary" 
      ]
     );

  $('#demo_two').DataTable( 
      "data": dataSet,
      columns: [
         data: "name" ,
         data: "position" ,
         data: "office" ,
         data: "extn" 
      ]
     );

  );

 );

现在,我的每个表都是从 javascript 源 (var dataSet) 填充的,而 JavaScript 源又是从 ajax 调用填充的。

结果如下:

【讨论】:

以上是关于如何将一个 ajax 数据源与多个 JQuery 数据表一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Django - 如何使用 JQuery Ajax 插入多个表单数据

如何使用 AJAX/JQuery 调用多个 PHP 脚本?

使用 jQuery 的 $.ajax() 将多个 Json 对象作为数据传递

codeigniter php 和 jquery - 如何从多个表中获取数据并通过 ajax 返回

如何使用 jquery 和 Ajax 将多个文件字段保存到 django

jquery如何在另一个结束后使用多个ajax调用