当前位置: 首页 > 知识库问答 >
问题:

尽管有很好的格式Json(DataTables),但不能向我的表中添加行

戴浩初
2023-03-14

我想用一个AJax请求填充一个表(DataTables

我的请求ajax返回Json,但不可能填满表,我有以下错误:

DataTables警告:table ID=DT-Table-为第1行第0列请求未知参数“0”。有关此错误的详细信息,请参阅http://datatables.net/TN/4

我的桌子:

<div>
    <div class="table-responsive">
      <table id="dt-table" class="table table-striped table-bordered">
        <thead>
          <tr>
            <th>Invoice</th>
          </tr>
        </thead>

        <tbody>
          <tr>
            <td>
            </td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>

我的JS:

var table = $('#dt-table').DataTable({});

$(document).on("click", ".button", function() {

    var inputVal = $(this).text();
    var selectVal = $('#select option:selected').val();

    $.post("/ajax/invoice.php", {find: inputVal, column: selectVal}).done(function(data){
      console.log(data)
      table.rows.add(data).draw();
    });

});

ajax响应:

[{"invoice":"AZERT"},{"invoice":"JFKDH"},{"invoice":"DKHFVEP"}]

我的请求:

$column = $_POST['column'];

    $request = $bdd->prepare("SELECT invoice from table_master WHERE $column = :find");
    $request->execute(array(
      ':find' => $_POST['find']
      ));

    $result = $request->fetchAll(PDO::FETCH_ASSOC);

    echo json_encode($result);

我看不出问题出在哪里,我查看了DataTables文档,我的json的格式通常是正确的

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

共有2个答案

公羊瀚
2023-03-14

我不熟悉php,但是当我试图从一个模式弹出窗口更新行点击上的一些单元格时,我遇到了同样的问题。最后,我在post回调中设置了datatable属性。在重新创建表之前,我还必须销毁它。下面是我的LoadData函数回调:

         .done(function (result) {
                if (result.isError) {
                    window.location.href = result.newUrl;
                }
                else {
                    var html = '';
                    $('#searchTable').dataTable().fnDestroy();
                    $('#searchTableBody').empty();

                    if (result.TransactionDetails.lenght == 0) {
                        html += '<tr><td>No Records Found</td></tr>';
                    }
                    else {

                        $.each(result.TransactionDetails, function (i, item) {

                            html += '<tr><td id="hiddenIdentifier" >' + item.x + '</td><td>' + item.y + '</td><td>' + item.z + '</td><td style="width: 10%" >' + item.a + '</td><td style="width: 30%">' + item.b + '</td><td>' + item.c + '</td><td style="width: 50%">' + item.d + '</td><td style="width: 80%"><input type="button" data-toggle="modal" data-target="#detailsModal" class="table-btn" id="btnViewDetails" value="View Details" /><input type="button" id="btnEditAmt" data-toggle="modal" class="table-btn" data-target="#amtModal" value="Edit Amount" /></td></tr>';
                        });
                    }
                    $('#searchTableBody').append(html);

                    var table = $('#searchTable').DataTable({
                        searching: false,
                        paging: true,
                        columnDefs: [
                            {
                                "targets": [0],
                                "visible": false,
                                "searchable": false
                            },
                            {
                                "targets": [1],
                                "visible": true,
                                "searchable": true
                            },
                            {
                                "targets": [7],
                                "orderable": false
                            }
                        ]
                    })

                    $('#searchTable').show();
                    $('#loaderLoadData').fadeOut();
                }

        })

它只通过Api调用工作。fnDestroy()是关键。在重新创建它之前一定要销毁它。还要注意,我在done函数内部设置了DataTable属性。

徐佐
2023-03-14

您需要将 参数定义为列源,如:

var table = $('#dt-table').DataTable({"columns":[{ "data": "invoice"}]});
 类似资料:
  • 我想运行JavaFX。我已经运行了它,但我使用了相同的风景,所以我不知道为什么它现在不运行了。首先,我在模块设置中将库添加到购物车库中,然后在运行/调试配置中编写VM选项的路径: 然而,现在我看到: 我在过去使用同样的方法运行它,所以我不知道为什么现在会出现错误。

  • TL;博士- 请考虑下面的绘图脚本: 如您所见,这是的的一个非常基本的用法。理想情况下,这会生成如下所示的图形: 没什么特别的,我知道。然而,目前还不清楚哪些数据被绘制在哪里(我试图绘制一些排序算法的数据,长度与所用时间的关系,我想确保人们知道哪一行是哪一行)。因此,我需要一个传说,但是,看看下面的例子(从官方网站): 您将看到我需要创建一个额外的变量。如何在不创建这个额外变量的情况下将图例添加到

  • 问题内容: 我表中有很多行,并且我在数据库上运行了相同的查询,即MySql,但是java ResultSet仅给出了表的第一行。这是我的代码。 问题答案: 如果要获取所有行,则应为: 在而当特定的条件为真语句连续执行语句块 注意:正如@BalusC所说,您的代码会引入SQL注入攻击,最好使用ptmt.set …而不是手动构造SQL String。

  • 我得到了这个错误: 线程“main”java.lang.NullPointerException在GUI上的javax.swing.ImageIcon(未知源)。(Gui.java:22)在test.main(test.java:7)

  • 因为几天前詹金斯的测试被取消了。我在里面得到的错误是: 配置根项目“MyAutomationTests”时出现问题。 未找到名为“测试编译”的配置。 这是我的build.gradle文件: 我们在詹金斯的自动测试一直运行良好,直到几天前。从那时起,它们就不再编译这个问题一开始就给出的错误了。在依赖项代码块中有“实现组”,但我最近将其改为TestCompile。“实现组”工作得很好,但它开始在Tes

  • 这似乎不起作用。 我还尝试在代码生成器使用的xml中添加架构名称,如 http://www.jooq.org/doc/3.5/manual/code-generation/codegen-advanced/