【问题标题】:Requested unknown parameter 'name' for row 0, column 0 ajax in the datatable请求数据表中第 0 行第 0 列 ajax 的未知参数“名称”
【发布时间】:2019-07-17 17:31:45
【问题描述】:

我无法使用 Ajax 显示数据,我收到错误消息:

为第 0 行第 0 列请求未知参数“名称”

HTML

<table id="datatable">
    <thead>
        <tr>
            <td>Name</td>
            <td>Surname</td>
        </tr>
    </thead>
</table>

PHP

header('Content-Type: application/json; charset=utf-8');
$columns = '{"data": [';
$columns .= '{"name": "1234567890", "surname": "test"}, ';
$columns .= '{"name": "8200469963", "surname": "amit"}';
$columns .= ']}';
die(json_encode($columns));

JavaScript

$(document).ready(function() {
    $('#datatable').DataTable({
        "responsive": true,
        "processing" : true ,
        "serverSide" : true ,
        "ajax": {
            type: 'POST',
            url: "data.php",
            dataType: 'json',
            dataSrc: ""
        },
        "columns": [
            { "data": "name" },
            { "data": "surname" }
        ]
    });
});

【问题讨论】:

    标签: php jquery datatables


    【解决方案1】:

    您的代码存在几个问题:

    • 您的响应结构的 DataTables 初始化设置 serverSide: truedataSrc: "" 无效。
    • PHP 脚本两次编码为 JSON。

    使用以下 PHP 脚本作为模板:

    <?php
    
    header('Content-Type: application/json; charset=utf-8');
    
    $data = [
       'data' => [
          [
             'name' => '1234567890',
             'surname' => 'test'
          ],
          [
             'name' => '8200469963',
             'surname' => 'amit'
          ],
       ]
    ];
    
    echo json_encode($data);
    

    使用以下初始化选项:

    $(document).ready(function() {
        $('#datatable').DataTable({
            "responsive": true,
            "ajax": {
                type: "POST",
                url: "data.php"
            },
            "columns": [
                { "data": "name" },
                { "data": "surname" }
            ]
        });
    });
    

    【讨论】:

      【解决方案2】:

      您的 PHP 代码有两个问题:

      1. 您的 $columns 变量是一个字符串,您尝试将其编码为 JSON - 这根本不会产生您所期望的。您应该将其创建为对象,然后进行编码:

        $columns = ["data" => [
            ["name" => "1234567890", "surname" => "test"],
            ["name" => "8200469963", "surname" => "amit"]
        ]];
        
      2. 不要使用die - 这可能会对服务器端造成不良影响。请改用echo

        echo json_encode($columns);
        

      所以,总的来说,您的 PHP 代码将是:

      header('Content-Type: application/json; charset=utf-8');
      
      $columns = ["data" => [
          ["name" => "1234567890", "surname" => "test"],
          ["name" => "8200469963", "surname" => "amit"]
      ]];
      
      echo json_encode($columns);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-28
        • 1970-01-01
        • 1970-01-01
        • 2014-09-16
        • 2020-03-18
        • 2016-09-24
        • 2015-08-30
        相关资源
        最近更新 更多