繁体   English   中英

数据表中第0行第0列ajax请求的未知参数'name'

[英]Requested unknown parameter 'name' for row 0, column 0 ajax in the datatable

我无法使用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" }
        ]
    });
});

您的代码有几个问题:

  • 无效的DataTables初始化设置serverSide: trueserverSide: true dataSrc: ""用于您的响应结构。
  • 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" }
        ]
    });
});

您的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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM